剑指offer-day03字符串
程序员文章站
2022-07-14 18:49:52
...
1.替换空格
把字符串 s 中的每个空格替换成"%20"。
解法1:APIBoy
解题思路:
APIBoy不需要思路
return s.replace(" ","%20");
解法2:StringBuilder
解题思路:
利用StringBuilder的特性,对字符串进行累加操作,如果遇到空格,则添加“%20”.
StringBuilder sb=new StringBuilder();
char[] chars = s.toCharArray();
for (char ch:chars
) {
if(ch==' '){
sb.append("%20");
}else{
sb.append(ch);
}
}
return sb.toString();
解法3:数组遍历
解题思路:
- 申请一个字符数组dic,长度为原字符串长度的三倍
- 遍历原字符串,遇到空格,则分别添加 ’%‘ ,’2‘,’0‘
- 最后只需截取dic有字符的部分
2.左旋转字符串
解法1:APIBoy
APIBoy!不!需!要!思!路!!!
public String reverseLeftWords(String s, int n) {
return s.substring(n,s.length())+s.substring(0,n);
}
解法2:拼接法(时间拉了大跨)
*字符串的左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请定义一个函数实现字符串左旋转操作的功能。比如,输入字符串"abcdefg"和数字2,该函数将返回左旋转两位得到的结果"cdefgab"。
*
解题思路:
- 用原字符串拼接自己,例如原字符串为:delete 拼接后的字符串就为:deletedelete
- 从给定数字的位置截取字符串,截取长度为原字符串的长度
public String reverseLeftWords(String s, int n) {
int length=s.length()+n;
s=s+s;
char[] chars=new char[length-n];
for (int i = 0; i < chars.length; i++) {
chars[i]=s.charAt(n++);
}
return String.valueOf(chars);
}
上一篇: Java Day4 基础6~10
下一篇: 03字符串
推荐阅读
-
剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。
-
剑指offer31:整数中1出现的次数(从1到n整数中1出现的次数)
-
剑指offer28:找出数组中超过一半的数字。
-
剑指offer27:按字典序打印出该字符串中字符的所有排列
-
C#版剑指Offer-001二维数组中的查找
-
剑指offer11:输入一个整数,输出该数二进制表示中1的个数。其中负数用补码表示。(进制转换,补码反码)
-
剑指offer13:数组[奇数,偶数],奇数偶数相对位置不变。
-
AMD新卡RX 5500现身跑分:剑指GTX 1660?
-
剑指offer第二天
-
网酒网与酒老板签署战略合作 乐视美酒生态剑指华东