大寫(xiě)字母轉(zhuǎn)換成小寫(xiě)字母
709. 轉(zhuǎn)換成小寫(xiě)字母 - 力扣(LeetCode)
給你一個(gè)字符串 s
,將該字符串中的大寫(xiě)字母轉(zhuǎn)換成相同的小寫(xiě)字母,返回新的字符串。
1 <= s.length <= 100
解
大寫(xiě)字母和小寫(xiě)字母的值之間存在固定的差異。例如,小寫(xiě)字母a
的ASCII值為97
,而對(duì)應(yīng)的大寫(xiě)字母A
的ASCII值為65
,兩者之差恰好為32
。
public String toLowerCase(String s)
{
char[] charArr = s.toCharArray();
for (int i = 0; i < charArr.length; i++)
{
if (charArr[i] >= 'A' && charArr[i] <= 'Z')
charArr[i] += 32; //得用 += 表達(dá)式
}
return new String(charArr);
}
字符串轉(zhuǎn)換整數(shù)
8. 字符串轉(zhuǎn)換整數(shù) (atoi) - 力扣(LeetCode)
請(qǐng)你來(lái)實(shí)現(xiàn)一個(gè) myAtoi(string s)
函數(shù),使其能將字符串轉(zhuǎn)換成一個(gè) 32 位有符號(hào)整數(shù)(類似 C/C++ 中的 atoi
函數(shù))。
函數(shù) myAtoi(string s)
的算法如下:
- 讀入字符串并丟棄無(wú)用的前導(dǎo)空格
- 檢查下一個(gè)字符(假設(shè)還未到字符末尾)為正還是負(fù)號(hào),讀取該字符(如果有)。 確定最終結(jié)果是負(fù)數(shù)還是正數(shù)。 如果兩者都不存在,則假定結(jié)果為正。
- 讀入下一個(gè)字符,直到到達(dá)下一個(gè)非數(shù)字字符或到達(dá)輸入的結(jié)尾。字符串的其余部分將被忽略。
- 將前面步驟讀入的這些數(shù)字轉(zhuǎn)換為整數(shù)(即,“123” -> 123, “0032” -> 32)。如果沒(méi)有讀入數(shù)字,則整數(shù)為
0
。必要時(shí)更改符號(hào)(從步驟 2 開(kāi)始)。 - 如果整數(shù)數(shù)超過(guò) 32 位有符號(hào)整數(shù)范圍
[?231, 231 ? 1]
,需要截?cái)噙@個(gè)整數(shù),使其保持在這個(gè)范圍內(nèi)。具體來(lái)說(shuō),小于?231
的整數(shù)應(yīng)該被固定為?231
,大于231 ? 1
的整數(shù)應(yīng)該被固定為231 ? 1
。 - 返回整數(shù)作為最終結(jié)果。
注意:
- 本題中的空白字符只包括空格字符
' '
。 - 除前導(dǎo)空格或數(shù)字后的其余字符串外,請(qǐng)勿忽略 任何其他字符。
示例 1:
輸入:s = "42"
輸出:42
示例 2:
輸入:s = " -42"
輸出:-42
示例 3:
輸入:s = "4193 with words"
輸出:4193
示例 4:
輸入:s = " with words 4193"
輸出:0
示例 5:
輸入:s = "324523452345"
輸出:2147483647
提示:
0 <= s.length <= 200
-
s
由英文字母(大寫(xiě)和小寫(xiě))、數(shù)字(0-9
)、' '
、'+'
、'-'
和'.'
組成
解
這個(gè)問(wèn)題其實(shí)沒(méi)有考察算法的知識(shí),模擬的是日常開(kāi)發(fā)中對(duì)于原始數(shù)據(jù)的處理(例如「參數(shù)校驗(yàn)」等場(chǎng)景),如果面試中遇到類似的問(wèn)題,應(yīng)先仔細(xì)閱讀題目文字說(shuō)明和示例,有疑惑的地方和需要和面試官確認(rèn),在編碼的時(shí)候需要耐心和細(xì)心地調(diào)試。
其實(shí)很多時(shí)候,業(yè)務(wù)需求就是類似這樣的問(wèn)題,工作中如果遇到:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-822963.html
1、有現(xiàn)成的工具和類庫(kù)需盡量使用,因?yàn)樗鼈兪切阅芨鼉?yōu),且經(jīng)過(guò)更嚴(yán)格測(cè)試,是相對(duì)可靠的;
2、能抽取成工具類、工具方法的盡量抽取,以突出主干邏輯、方便以后代碼復(fù)用;
3、不得不寫(xiě)得比較繁瑣、冗長(zhǎng)的時(shí)候,需要寫(xiě)清楚注釋、體現(xiàn)邏輯層次,以便上線以后排查問(wèn)題和后續(xù)維護(hù)。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-822963.html
public static int myAtoi(String s)
{
char[] charArr = s.toCharArray();
//去除前導(dǎo)空格
int index = 0;
while (index < s.length() && charArr[index] == ' ')
index++;
//去除極端用例' '
if (index == s.length())
return 0;
//對(duì)前導(dǎo)空格之后的第一個(gè)字符進(jìn)行判斷
//若即不是'='、'-',也不是'數(shù)字',則會(huì)在下面的while中直接break,return 0
int sign = 1; //默認(rèn)為正
char ch = charArr[index];
if (ch == '+')
index++;
else if (ch == '-')
{
sign = -1;
index++;
}
int ans = 0;
while (index < s.length())
{
char curChar = charArr[index];
//不是數(shù)字就退出
if (curChar < '0' || curChar > '9')
break;
//題目稱環(huán)境無(wú)法容納超過(guò) int 范圍的數(shù)據(jù)
//故需要在越界之前判斷
int curNum = Character.getNumericValue(curChar);
//ans 為正數(shù)
if (ans > Integer.MAX_VALUE / 10
|| (ans == Integer.MAX_VALUE / 10 && curNum > Integer.MAX_VALUE % 10))
return Integer.MAX_VALUE;
//ans 為負(fù)數(shù)
//注:Integer.MIN_VALUE % 10 == -8
else if( ans < Integer.MIN_VALUE / 10
|| (ans == Integer.MIN_VALUE / 10 && curNum > -(Integer.MIN_VALUE % 10)))
return Integer.MIN_VALUE;
//經(jīng)過(guò)檢驗(yàn),可以繼續(xù)轉(zhuǎn)換為數(shù)字
ans = ans * 10 + sign * curNum;
index++;
}
return ans;
}
到了這里,關(guān)于不簡(jiǎn)單的字符串轉(zhuǎn)換問(wèn)題(算法村第十二關(guān)青銅挑戰(zhàn))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!