一、题目链接
http://noi.openjudge.cn/ch0107/09/
二、解题思路(Java)
◎ java.lang.String.valueOf(char[] chars)方法:返回chars字符数组的字符串形式;
◎ java.lang.Character.isLetter(char c)方法:判断给定的字符c是否为字母,如果是则返回true,否则返回false;
◎ 方法public String encryption(String text)处理所有业务逻辑:
→ 参数text为String类型的对象,代表待加密的字符串;
→ encryption方法返回String类型的对象,代表text的加密字符串;
◎ 定义int类型的整数n,代表字符串的长度,令n = text.length();
◎ 定义char类型的数组ans,存储text中的每个字符,定义语句如下:
→ char[] ans = text.toCharArray();
◎ 从第一个字符开始,到最后一个字符为止,利用循环i处理如下:
→ 如果判断表达式ans[i] == 'z' || ans[i] == 'Z'成立,也即当前字符ans[i]是z或Z,则令ans[i] = (char) (ans[i] - 25),也
即用a或A替代;
→ 否则如果判断表达式isLetter(ans[i])成立,则当前字符ans[i]是a~y和A~Y的字母,令ans[i] = (char) (ans[i] + 1),也即用其
后继字母替代;
循环i结束后,ans中存储了text对应的所有加密字符,返回对应的字符串形式String.valueOf(ans);
◎ 在main方法中调用encryption方法,注入相应的参数后即可获得计算结果。
三、解题思路(C++)
◎ isalpha(char c)函数:判断给定的字符c是否为字母,如果是则返回true,否则返回false;
◎ 定义并输入string类型的字符串text,代表待加密的字符串;
◎ 定义int类型的整数n,代表text的长度,令n = text.length();
◎ 从第一个字符开始,到最后一个字符为止,利用循环i处理如下:
→ 如果判断表达式text[i] == 'z' || text[i] == 'Z'成立,也即当前字符text[i]是z或Z,则令text[i] = text[i] - 25,也即用a
或A替代;
→ 否则如果判断表达式isalpha(text[i])成立,也即当前字符text[i]为其它字母,则令text[i] = text[i] + 1,也即用其后继字母替
代;
循环i结束后,text完成加密过程;
◎ 输出text。
四、Java程序
import java.util.Scanner;
import static java.lang.Character.isLetter;
public class Main {
public String encryption(String text) {
int n = text.length();
char[] ans = text.toCharArray();
for (int i = 0; i < n; i++) {
if (ans[i] == 'z' || ans[i] == 'Z') {
ans[i] = (char) (ans[i] - 25);
}
else if (isLetter(ans[i])) {
ans[i] = (char) (ans[i] + 1);
}
}
return String.valueOf(ans);
}
public static void main(String[] args) {
Main test = new Main();
Scanner input = new Scanner(System.in);
String text = input.nextLine();
System.out.print(test.encryption(text));
}
}
五、C++程序
#include <iostream>
using namespace std;
int main()
{
string text;
getline(cin, text);
int n = text.length();
for (int i = 0; i < n; i++)
{
if (text[i] == 'z' || text[i] == 'Z')
{
text[i] = text[i] - 25;
}
else if (isalpha(text[i]))
{
text[i] = text[i] + 1;
}
}
cout << text;
return 0;
}