344.反转字符串
题目链接/文章讲解/视频讲解:https://programmercarl.com/0344.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2.html
class Solution {
public void reverseString(char[] s) {
int left = 0, right = s.length - 1;
while (left < right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
}
541. 反转字符串II
题目链接/文章讲解/视频讲解:https://programmercarl.com/0541.%E5%8F%8D%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2II.html
class Solution {
public String reverseStr(String s, int k) {
char ch[] = s.toCharArray();
for(int i = 0; i < ch.length; i = i + 2 * k) {
int start = i;
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);
}
}
计算起始和终止位置:
int start = i;
这里设置start
为当前子串的起始位置。int end = Math.min(ch.length - 1, start + k - 1);
这里设置end
为当前子串的结束位置,但要确保它不会超过数组的界限。Math.min
函数确保即使在字符串的末尾部分,当剩余字符少于k
个时,也不会超出范围。
卡码网:54.替换数字
题目链接/文章讲解:https://programmercarl.com/kama54.%E6%9B%BF%E6%8D%A2%E6%95%B0%E5%AD%97.html
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String s = scanner.nextLine();
int n = s.length();
String str = "";
for(int i=0;i<n;i++) {
if(s.charAt(i)<'0'||s.charAt(i)>'9')
str+=s.charAt(i);
else
str+="number";
}
System.out.println(str);
}
}
151.翻转字符串里的单词
题目链接/文章讲解/视频讲解:https://programmercarl.com/0151.%E7%BF%BB%E8%BD%AC%E5%AD%97%E7%AC%A6%E4%B8%B2%E9%87%8C%E7%9A%84%E5%8D%95%E8%AF%8D.html
class Solution {
public String reverseWords(String s) {
s = s.trim();
int i = s.length() - 1, j = i;
StringBuilder res = new StringBuilder();
while (i >= 0) {
while (i >= 0 && s.charAt(i) != ' ') i--;
res.append(s.substring(i + 1, j + 1) + " ");
while (i >= 0 && s.charAt(i) == ' ') i--;
j = i;
}
return res.toString().trim();
}
}
796. 旋转字符串
题目链接/文章讲解:
力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台
class Solution {
public boolean rotateString(String s, String goal) {
int m = s.length(), n = goal.length();
if (m != n) {
return false;
}
for (int i = 0; i < n; i++) {
boolean flag = true;
for (int j = 0; j < n; j++) {
if (s.charAt((i + j) % n) != goal.charAt(j)) {
flag = false;
break;
}
}
if (flag) {
return true;
}
}
return false;
}
}