344.反转字符串 leetcode地址
class Solution {
public void reverseString(char[] s) {
int l = 0;
int r = s.length - 1;
while(l < r){
char temp = s[l];
s[l] = s[r];
s[r] = temp;
l++;
r--;
}
}
}
简单秒了
541. 反转字符串II leetcode地址
class Solution {
public String reverseStr(String s, int k) {
char[] c = s.toCharArray();
int n = s.length();
for(int l = 0; l < n; l = l + 2 * k){
int r = l + k -1;
revese(c,l,Math.min(r, n - 1));
}
return new String(c);
}
public void revese(char[] c,int left,int right){
while(left < right){
char temp = c[left];
c[left] = c[right];
c[right] = temp;
left++;right--;
}
}
}
return new String(c);
和 return String.valueOf(c);
public class StringExample {
public static void main(String[] args) {
char[] c = {'H', 'e', 'l', 'l', 'o'};
// 使用 new String
String str1 = new String(c);
System.out.println(str1); // 输出: Hello
// 使用 String.valueOf
String str2 = String.valueOf(c);
System.out.println(str2); // 输出: Hello
}
}
- 功能相同:两者都将字符数组转换为字符串。
- 底层实现:
String.valueOf(cs)
实际上会调用new String(cs)
。 - 可读性:
String.valueOf
在某些情况下可能更具可读性,尤其是在处理不同类型的转换时。
替换数字 卡码网链接
import java.util.Scanner;
public class Main{
public static void main(String[] args){
Scanner scanner = new Scanner(System.in);
String s = scanner.next();
System.out.println(replaceNumber(s));
scanner.close();
}
public static String replaceNumber(String s) {
int count = 0; // 统计数字的个数
int sOldSize = s.length();
for (int i = 0; i < s.length(); i++) {
if(Character.isDigit(s.charAt(i))){
count++;
}
}
// 扩充字符串s的大小,也就是每个空格替换成"number"之后的大小
char[] newS = new char[s.length() + count * 5];
int sNewSize = newS.length;
// 将旧字符串的内容填入新数组
System.arraycopy(s.toCharArray(), 0, newS, 0, sOldSize);
// 从后先前将空格替换为"number"
for (int i = sNewSize - 1, j = sOldSize - 1; j < i; j--, i--) {
if (!Character.isDigit(newS[j])) {
newS[i] = newS[j];
} else {
newS[i] = 'r';
newS[i - 1] = 'e';
newS[i - 2] = 'b';
newS[i - 3] = 'm';
newS[i - 4] = 'u';
newS[i - 5] = 'n';
i -= 5;
}
}
return new String(newS);
}
}
java中String不能扩容,先数数字个数,再扩容,在填入
主要练一下ACM模式
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (scanner.hasNext()) {
int a = scanner.nextInt();
int b = scanner.nextInt();
if (a == 0 && b == 0) {
break;
}
System.out.println(a + b);
}
}
}
算法2.5h
博客0.5h