LeetCode 541. 反轉字串(java實現)
阿新 • • 發佈:2018-12-26
給定一個字串和一個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。
示例:
輸入: s = "abcdefg", k = 2
輸出: "bacdfeg"
要求:
- 該字串只包含小寫的英文字母。
- 給定字串的長度和 k 在[1, 10000]範圍內。
class Solution { public String reverseStr(String s, int k) { char[] chs=s.toCharArray(); int i=0; while(i<chs.length){ if(i+2*k<chs.length){ reverse(chs,i,i+k-1); i=i+2*k; }else if( i+k<chs.length){ reverse(chs,i,i+k-1); break; }else if(i+k>=chs.length){ reverse(chs,i,chs.length-1); break; } } String str=""; for(int j=0;j<chs.length;j++) str+=chs[j]; return str; } public void reverse(char[] chs,int i,int j){//反轉字串中下標i到j的子串 for(int start=i;start<(j+i+1)/2;start++){ swap(chs,start,j-(start-i)); } } public void swap(char[] chs,int i,int j){ char temp=chs[i]; chs[i]=chs[j]; chs[j]=temp; } }