程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数?

开发过程中遇到jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数的问题如何解决?下面主要结合日常开发的经验,给出你关于jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数的解决方法建议,希望对你解决jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数有所启发或帮助;

给定一个字符串 s 和一个数字 n,编写一个函数,将偶数索引字符连接到前面,将奇数索引字符连接到后面,n 次。 示例:

  • s = "哇的例子!"`
  • result = "WwEapeo xml!"

Bellow 是我对这个问题的回答,现在我需要优化这个解决方案,使其在 O(n) 中运行。请大家帮忙。

public class main {

    public static voID main(String[] args) {
        String wordToJumble = "Wow Example!";
        Long numberOfTimes = 1L;
        jumbledString( wordToJumble,numberOfTimes);
    }

    public static String jumbledString(String s,Long n){
        StringBuilder sbEven = new StringBuilder();
        StringBuilder sbOdd = new StringBuilder();
        StringBuilder s2= new StringBuilder(s);
        char[] word = s.tochararray();
        if(n>0) {
            while (n > 0) {
                n--; 
                sbEven.setLength(0);
                sbOdd.setLength(0); 
                for (int i = 0; i < word.length; i++) {
                    if (i % 2 == 0) {
                        sbEven.append(word[i]);
                    } else {
                        sbOdd.append(word[i]);
                    }
                }
                s2 = sbEven.append(sbOdd);
                word = s2.toString().tochararray();

            }
            System.out.println(s2);
        }else{
            System.out.println(s2);
        }
        return s2.toString();
    }
}

解决方法

只需逐个字符并在适当的地方添加到结果 sbEvensbOdd 中。之后,append() n 次得到结果字符串。您可以使用 charAt(int) 方法而不是将字符串转换为 char[]

该解决方案在 O(n) 中,但请注意,n 不是您的 numberOfTimes。这是字符串的长度。

public static String jumbledString(String s,long n) {
    StringBuilder sbEven = new StringBuilder();
    StringBuilder sbOdd = new StringBuilder();
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < s.length(); i++) {
        if (i % 2 == 0) {
            sbEven.append(s.charAt(i));
        } else {
            sbOdd.append(s.charAt(i));
        }
    }
    for (int i = 0; i < n; i++) {
        result.append(sbEven);
        result.append(sbOdd);
    }
    return result.toString();
}

或者没有第二个循环,您可以对 repeat() 使用 String 方法(我假设 nlong):

return result.toString().repeat((int) n);
,
public class main {


public static void main(String[] args) {
    String wordToJumble = "Wow Example!";
    Long numberOfTimes = 9L;
    jumbledString(wordToJumble,numberOfTimes);
}

public static String jumbledString(String s,Long n) {
    StringBuilder sbEven = new StringBuilder();
    StringBuilder sbOdd = new StringBuilder();
    char[] word = s.toCharArray();
    if (n > 0) {
            for (int x = 0; x < n; x++) {
                word = newJumble(word,sbEven,sbOdd);
            }
    }
    System.out.println(word);
    return word.toString();
}

private static char[] newJumble(char[] s,StringBuilder sbEven,StringBuilder sbOdd) {
    sbEven.setLength(0);
    sbOdd.setLength(0);
    StringBuilder result;
    for (int i = 0; i < s.length; i++) {
        if (i % 2 == 0) {
            sbEven.append(s[i]);
        } else {
            sbOdd.append(s[i]);
        }
    }
    result = sbEven.append(sbOdd);
    return result.toString().toCharArray();
}

}

大佬总结

以上是大佬教程为你收集整理的jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数全部内容,希望文章能够帮你解决jumbledString:给定一个字符串 s 和一个数字 n,编写一个将偶数索引字符连接到前面的函数所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。