如何在特定点旋转String中的字符?

时间:2015-03-02 17:23:36

标签: java

我可以编写这样的代码,它只能在m和M之后旋转n和N

之后的字符
public class solution {
    public static String encode(String s) {
        StringBuffer sb = new StringBuffer();

        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);

            if (c >= 'a' && c <= 'm' || c >= 'A' && c <= 'M') {
                sb.append((char) ((int) c + 13));
                continue;
            }

            if (c >= 'n' && c <= 'z' || c >= 'N' && c <= 'Z') {
                sb.append((char) ((int) c - 13));
                continue;
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(encode("firefly"));
    }
}

所以如何调整它以将字符串也放入整数public static String encode(String s, int i),以便我将从26个字符中的数字i旋转。例如,如果我输入12作为int,那么它将不再从m或M开始旋转,但它将从l或L旋转,这看起来比在26个字符的中间位置更难。

1 个答案:

答案 0 :(得分:1)

对于需要代码的小写字符:

int before = c - 'a';
int after = (before + i) % 26;
sb.append((char)('a'+(char)after));

大写字符的代码非常相似。