代码随想录算法训练营Day8|字符串part01
文章目录
后面两道题纯属偷懒,直接调用API完成的
一、344,反转字符串
class Solution {
public void reverseString(char[] s) {
int left=0;
int right=s.length-1;
while(left<=right){
char t=s[left];
s[left]=s[right];
s[right]=t;
++left;
--right;
}
}
}
二、541.反转字符串2
class Solution {
public String reverseStr(String s, int k) {
char[] ch = s.toCharArray();
for(int i = 0;i < ch.length;i += 2 * k){
int start = i;
// 判断尾数够不够k个来取决end指针的位置
int end = Math.min(ch.length - 1,start + k - 1);
while(start < end){
char temp = ch[start];
ch[start] = ch[end];
ch[end] = temp;
start++;
end--;
}
}
return new String(ch);
}
}
三、剑指 Offer 05. 替换空格
class Solution {
public String replaceSpace(String s) {
if(s==null){
return null;
}
StringBuilder sb=new StringBuilder();
for(int i=0;i<s.length();i++){
if(s.charAt(i)==' '){
sb.append("%20");
}
else{
sb.append(s.charAt(i));
}
}
return sb.toString();
}
}
四、151. 反转字符串中的单词
class Solution {
public String reverseWords(String s) {
s=s.trim();
//空白字符作为分隔符分割
//正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]
List<String> wordList = Arrays.asList(s.split("\\s+"));
Collections.reverse(wordList);
return String.join(" ", wordList);
}
}
五、剑指Offer58-II.左旋转字符串
class Solution {
public String reverseLeftWords(String s, int n) {
StringBuilder sb=new StringBuilder();
for(int i=n;i<s.length();i++){
sb.append(s.charAt(i));
}
for(int i=0;i<n;i++){
sb.append(s.charAt(i));
}
return sb.toString();
}
}