1. 轉換成小寫字母
給你一個字符串 s ,將該字符串中的大寫字母轉換成相同的小寫字母,返回新的字符串。
轉換成小寫字母
1.1 利用ASCII
首先需要直到常見的ASCII值
a-z: 97-122
A-Z: 65-90
0-9: 48-57
只需要將這個字符串先轉換成字符,然后讓字符+32就是對應的小寫字符,然后將字符數組轉換成字符串。
public String toLowerCase(String s) {char [] chars = s.toCharArray();for(int i=0;i<s.length();i++){if(chars[i] >= 65 && chars[i]<=90){chars[i] += 32;}}String str = new String(chars);return str;}
2. 字符串轉換整數 (atoi)
字符串轉換整數 (atoi)
請你來實現一個 myAtoi(string s) 函數,使其能將字符串轉換成一個 32 位有符號整數(類似 C/C++ 中的 atoi 函數)。
函數 myAtoi(string s) 的算法如下:
讀入字符串并丟棄無用的前導空格
檢查下一個字符(假設還未到字符末尾)為正還是負號,讀取該字符(如果有)。 確定最終結果是負數還是正數。 如果兩者都不存在,則假定結果為正。
讀入下一個字符,直到到達下一個非數字字符或到達輸入的結尾。字符串的其余部分將被忽略。
將前面步驟讀入的這些數字轉換為整數(即,“123” -> 123, “0032” -> 32)。如果沒有讀入數字,則整數為 0 。必要時更改符號(從步驟 2 開始)。
如果整數數超過 32 位有符號整數范圍 [?231, 231 ? 1] ,需要截斷這個整數,使其保持在這個范圍內。具體來說,小于 ?231 的整數應該被固定為 ?231 ,大于 231 ? 1 的整數應該被固定為 231 ? 1 。
返回整數作為最終結果。
注意:
本題中的空白字符只包括空格字符 ’ ’ 。
除前導空格或數字后的其余字符串外,請勿忽略 任何其他字符。
2.1
根據題目
- 傳遞的字符串需要先去除里面的空格
- 然后判斷數字的正負,這個可以采用一個標志來表示正負,
- 還需要判斷這個字符是不是數字,采用ASCII判斷
- 如果遇到的第一個字符不是數字,退出。
- 數字采用第一位*10+第二位數字
public int myAtoi(String s) {int length = s.length();char [] chars = s.toCharArray();// 去除空格int index =0;while(index<length && chars[index] == ' '){index++;}// 遍歷完成if(length == index){return 0;}// 判斷正負int sign =1;char firstChar = chars[index];if(firstChar == '+'){index++;}else if(firstChar == '-'){index++;sign = -1;}// 轉換數字int res =0;while(index<length){char currentChar = chars[index];// 不合法if(currentChar >'9' || currentChar<'0'){break;}// 避免溢出if(res > Integer.MAX_VALUE/10 ||(res == Integer.MAX_VALUE / 10 && (currentChar - '0') > Integer.MAX_VALUE % 10)){return Integer.MAX_VALUE;}if(res<Integer.MIN_VALUE/10 ||(res == Integer.MIN_VALUE / 10 && (currentChar - '0') > -(Integer.MIN_VALUE % 10))){return Integer.MIN_VALUE;}res = res*10+sign*(currentChar - '0');index ++;}return res;}
思路有的,但是實際操作還是有點難以處理,例如判斷溢出的情況可以采取的方法。