反转一个字符串(x)的次数?

时间:2014-02-18 21:36:07

标签: java while-loop

在我获得循环等和字符串缓冲区之前,这个 HAS 就像这样......带有一个while循环并通过操作来创建字符串..不是使用字符串缓冲区等。

public class C {

    public static void main(String[] args) {
        System.out.println(rotate("tom", 3));
    }

    public static String rotate(String s, int n) {
        String c = "";

        do {
            if (s.equals("")) {
                return c;
            } else {
                c = s.charAt(0) + c;
                n--;
                System.out.println(n);

            }

            s = s.substring(1);
        } while (n > 0);
        return c;

    }
}

就像标题所说的那样..我需要程序将名称“tom”旋转n次..所以在这个例子中有3次。

它做了一次并将“tom”改为“mot”但是我不知道如何将其改为“tom”三次中的第二次。 有人提供任何提示吗?

2 个答案:

答案 0 :(得分:3)

如果您将问题分解为两个解决方案,这可以非常有效! (N是字符串必须反转的次数!)

  • 当N甚至
  • 当N为奇数时

现在你应该知道在运行一些例子后,当N是偶数时,反转N次的单词将只是单词本身!所以:

if(N%2 == 0){
    return str;
}

当N为奇数时,您只需将其反转一次!不需要有一个while循环来保持N次反转,因为如果N是奇数,N-1是偶数!当反转到N-1时,弦应该自行返回!因此,再次将其反转将是您希望的输出。

所以你添加到上面的if语句

else{
    //do reverse function
}

这使得你不必继续反转字符串。你只会这样做一次, IF并且只有 N是奇数!

希望有所帮助。 :)

答案 1 :(得分:0)

假设您正在谈论逆转,您需要找到一种方法将c再次设置回s,以便您可以重复此操作。由于您正在进行逐个字符的反转,因此您需要两个循环:内部循环将从0运行到str.length - 1,而另一个循环应该从0运行到{ {1}}。

很多更容易 * ,但我想你的老师希望你这样做,以了解循环的基础知识。

* 如果是n - 1,那么您只需要返回n % 2 == 0,否则就会反转。