1、题目如下:
实现函数 ToLowerCase(),该函数接收一个字符串参数 str,并将该字符串中的大写字母转换成小写字母,之后返回新的字符串。
示例 1:
输入: "Hello"
输出: "hello"
示例 2:
输入: "here"
输出: "here"
示例 3:
输入: "LOVELY"
输出: "lovely"
2、代码如下:
class Solution {
public String toLowerCase(String str) {
char [] chars=str.toCharArray();
for(int i=0;i<chars.length;i++){
if(chars[i]>=65&&chars[i]<=91){
chars[i]=(char)(chars[i]+32);
}
}
return String.valueOf(chars);
}
}
public class MainClass {
public static String stringToString(String input) {
if (input == null) {
return "null";
}
return Json.value(input).toString();
}
public static void main(String[] args) throws IOException {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String line;
while ((line = in.readLine()) != null) {
String str = stringToString(line);
String ret = new Solution().toLowerCase(str);
String out = (ret);
System.out.print(out);
}
}
}
问题思路:
使用.toCharArray()将传入的字符串转换为字符数组,写一个for循环去遍历这个字符数组,并在遍历的过程中使用ASCII码来判断当前字符是否为大写字母。众所周知,ASCII范围为[65,91]的为大写字母。若当前字母为大写字母,则通过大写字母的ASCII码+32转换为小写字母,不过为什么大写字母的ASCII码加32后为其所对应的小写字母呢,通过查询ASCII码表可知,小写字母a的ASCII码为97,而大写字母A的ASCII字母为65。则大写字母和小写字母之间的差值为97-65=32。最后需要使用(char)将ASCII转换为对应的字母。因为转换后的结果为字符数组,而该函数返回类型为String。所以需要使用String.valueOf将char []转换为String。