java 如何更改字母[已关闭]

vwoqyblh  于 2022-12-17  发布在  Java
关注(0)|答案(2)|浏览(141)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

13小时前关门了。
Improve this question

public static String LetterChanges(String str) {

   String alphabet = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
   String res="";

   for (int i = 0; i < str.length (); i++) {
      for (int j = 0; j < alphabet.length (); j++) {
         if (str.charAt (i) == alphabet.charAt (j)) {
            res = str.replace (str.charAt (i), alphabet.charAt (j + 1));
            break;

         }
      }
   }
   return res;
}

让函数LetterChanges(str)接受传递的str参数,并使用以下算法修改它。将字符串中的每个字母替换为字母表中紧随其后的字母(例如,c变为d,z变为a)。
例如,我传递“Hello”作为参数str,并希望得到“Ifmmp”,但我得到了“Hellp”,只更改了最后一个字母

crcmnpdw

crcmnpdw1#

而不是使用

res = str.replace (str.charAt (i), alphabet.charAt (j + 1));

试试看

res += alphabet.charAt(j+1);

jutyujz0

jutyujz02#

你不需要嵌套循环,因为字母表中的字母都有连续的码位,所以你所要做的就是得到你想要增加a(或者大写的A)的字符之间的差值,然后加1,模26表示环绕z(或者Z),最后把这个新的距离加回到a,即:

public static String letterChanges(String str) {
    StringBuilder res = new StringBuilder(str.length());
    for (int i = 0; i < str.length(); ++i) {
        char ch = str.charAt(i);
        if (Character.isUpperCase(ch)) {
            ch = (char) ((ch + 1 - 'A') % 26 + 'A');
        } else if (Character.isLowerCase(ch)) {
            ch = (char) ((ch + 1 - 'a') % 26 + 'a');
        }
        res.append(ch);
    }
    return res.toString();
}

相关问题