当前位置: 首页 > news >正文

代码随想录算法训练营DAY8 | 字符串(1)

一、LeetCode 344 反转字符串

 题目链接: 344.反转字符串icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-string/

思路:双指针法交换。

class Solution {public void reverseString(char[] s) {int n = s.length;int left = 0, right = n-1;while(left < right){char temp = s[left];s[left] = s[right];s[right] = temp;left++;right--;}}
}

 二、LeetCode 541 反转字符串II

题目链接:541.反转字符串IIicon-default.png?t=N7T8https://leetcode.cn/problems/reverse-string-ii/

思路:双指针按块反转。

class Solution {public String reverseStr(String s, int k) {char[] cs = s.toCharArray();int n = cs.length;int left = 0, right = 0;while(n >= 2*k){right = left+k-1;reverse(cs,left,right);n -= 2*k;left = left + 2*k;}if(n >= k){right = left+k-1;reverse(cs,left,right);}else{reverse(cs,left,cs.length-1);}return new String(cs);}public void reverse(char[] cs, int left, int right){while(left < right){char temp = cs[left];cs[left] = cs[right];cs[right] = temp;left++;right--;}}
}

 三、卡码网 54 替换数字

题目链接:54.替换数字icon-default.png?t=N7T8https://kamacoder.com/problempage.php?pid=1064

思路:使用StringBuilder类的append方法,遍历字符串得到答案。

import java.util.*;
import java.lang.*;
public class Main{public static void main(String args[]){Scanner sc = new Scanner(System.in);String s = sc.nextLine();StringBuilder sb = new StringBuilder();for(int i = 0; i < s.length(); i++){if(s.charAt(i) >= '0' && s.charAt(i) <= '9'){sb.append("number");}else{sb.append(s.charAt(i));}}System.out.print(sb.toString());}
}

四、LeetCode 151 反转字符串中的单词

题目链接:151.反转字符串中的单词icon-default.png?t=N7T8https://leetcode.cn/problems/reverse-words-in-a-string/

思路:先去除首尾空格,再把字符串中的单词都存储到ArrayList中,最后倒序输出到Stringbuilder中,得到最终结果。

class Solution {public String reverseWords(String s) {List<String> list = new ArrayList<>();String ss = s.trim();char[] cs = ss.toCharArray();int left = 0;for(int i = 0; i < cs.length; i++){if(cs[i] == ' '){list.add(ss.substring(left,i));while(cs[i] == ' '){i++;}left = i;}}list.add(ss.substring(left,cs.length));StringBuilder sb = new StringBuilder();for(int i = list.size()-1; i >= 0; i--){sb.append(list.get(i));sb.append(" ");}return sb.toString().trim();}
}

五、卡码网 55 右旋转字符串

题目链接: 55.右旋转字符串

思路:先让k进行对n的求余,再截取后k个字符为子串1,剩余字符为子串2,创建StringBuilder把子串1和子串2合成可得出答案。

import java.util.*;
import java.lang.*;
public class Main{public static void main(String args[]){Scanner sc = new Scanner(System.in);int k = sc.nextInt();String s = sc.next();int n = s.length();k = k%n;String s1 = s.substring(n-k,n);String s2 = s.substring(0,n-k);StringBuilder sb = new StringBuilder();sb.append(s1);sb.append(s2);System.out.print(sb.toString());}
}

六、今日小结

        重学Java String的各种方法,有一种“温故而知新”的感觉;题目不是很难,回顾了很多字符串处理的方法和思想;明天继续加油*ovo!

http://www.lryc.cn/news/291484.html

相关文章:

  • 如何更改Outlook阅读邮件时的默认字体?
  • 【C++基础入门】三、运算符(算术运算符、赋值运算符、比较运算符、逻辑运算符)
  • ES7.17由于IP变化导致的故障及恢复
  • uniapp H5 touchstart touchend 切换背景会失效,或者没用
  • 【word visio绘图】关闭visio两线交叉的跳线(跨线)
  • meson、ninja编译dpdk
  • diff命令详解
  • Backtrader 文档学习- Broker - Slippage
  • 三子棋游戏小课堂
  • golang开源的可嵌入应用程序高性能的MQTT服务
  • uniapp微信小程序-请求二次封装(直接可用)
  • UE4 C++ 结构体
  • 软件工程知识梳理0-概述
  • 贪吃蛇---C语言---详解
  • Airflow原理浅析
  • uniapp 使用canvas 画海报,有手粘贴即可用
  • Vite+Vue3+TS 引入使用Cesium.js
  • Cocos creator 动作系统
  • 对Spring当中AOP的理解
  • 【Vue】2-8、Axios 网络请求
  • Vue中嵌入原生HTML页面
  • streampark+flink一键整库或多表同步mysql到doris实战
  • Vim实战:使用 Vim实现图像分类任务(二)
  • 学习MySQL ENUM数据类型
  • 88.合并两个有序数组
  • python查询xml类别
  • nginx配置及性能优化
  • 阿里云如何找回域名,进行添加或删除?
  • 机器学习 低代码 ML:PyCaret 的使用
  • 前端入门第二天