Re: [閒聊] 每日LeetCode
557. Reverse Words in a String III
題目:
給定一個字串,返回這個字串以"空白分隔"的反轉。
Example:
Input: s = "God Ding"
Output: "doG gniD"
思路:
1.遍歷字串直到找到空白
2.若在i位置找到空白則把start到i-1位置的字串都反轉,並紀錄下個start的位置
3.遍歷完字串後為了避免不含空白的測資需要再對start到s.lengh反轉一次。
JavaCode:
class Solution {
public String reverseWords(String s) {
char[] res = s.toCharArray();
int start = 0;
for(int i = 0; i < s.length(); i++) {
if(res[i] == ' ') {
reverse(res, start, i - 1);
start = i + 1;
}
}
reverse(res, start, s.length() - 1);
return new String(res);
}
private void reverse(char[] str,int start,int end){
while (start < end){
char temp = str[start];
str[start++] = str[end];
str[end--] = temp;
}
}
}
今天是溫柔善良的easy
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.84.141 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Marginalman/M.1663814459.A.8D8.html
推
09/22 10:42,
1年前
, 1F
09/22 10:42, 1F
推
09/22 10:45,
1年前
, 2F
09/22 10:45, 2F
推
09/22 10:49,
1年前
, 3F
09/22 10:49, 3F
如果前面有空白的話start不會是0就會變成只反轉Ding
如果沒空白就是反轉0到s.length
※ 編輯: Rushia (1.160.84.141 臺灣), 09/22/2022 10:53:00
→
09/22 10:52,
1年前
, 4F
09/22 10:52, 4F
推
09/22 10:55,
1年前
, 5F
09/22 10:55, 5F
討論串 (同標題文章)