541. Reverse String II
Link
難易度 : Easy
又是一題string reverser的變形
題目給予一個string經作操作後回傳一個string,統整完題目的意思後其實可以歸納成兩類
- 剩餘字元數 >= k : 翻轉前 k 個字元
- 剩餘字元數 < k : 剩餘字元全數翻轉
因此作法上只要注意一下兩個case的指針start與end就可以很輕鬆地寫出來
class Solution {
public String reverseStr(String s, int k) {
char[] chars = s.toCharArray();
char tmp;
for(int i=0;i<s.length();i+=2*k)
{
int start,end;
//判斷剩餘的個數是否有超過k個
//若有超過則執行reverse前k的字元
//若沒超過則剩餘字元全部reverse
if(chars.length-i>=k)
{
start=i;
end=i+k-1;
}
else
{
start=i;
end = chars.length-1;
}
while(start<end)
{
tmp = chars[start];
chars[start] = chars[end];
chars[end] = tmp;
start++;
end--;
}
}
return new String(chars);
}
}