当前位置:   article > 正文

代码随想录day8 Java版

代码随想录day8 Java版

541. 反转字符串II

跟之前的反转字符串一样使用双指针,外层循环以2k为单位,并对于最后一段进行长度处理

  1. class Solution {
  2. public String reverseStr(String s, int k) {
  3. char[] str = s.toCharArray();
  4. for (int i = 0; i < str.length; i += 2*k ){
  5. int left = i, right = i+k-1;
  6. if (right > str.length-1) right = str.length-1;
  7. while(left < right) {
  8. char temp = str[left];
  9. str[left] = str[right];
  10. str[right] = temp;
  11. left++ ;
  12. right--;
  13. }
  14. }
  15. return new String(str);
  16. }
  17. }

54. 替换数字

不考虑空间复杂度就是新生题,Java注意StringBuilder才能修改,String在常量池不能改

判断是否为数字用Character.isDigit(s.charAt(i))

如果题目在力扣上输入类型可改变,可以用双指针原地扩容

  1. import java.util.Scanner;
  2. class Main {
  3. public static void main(String[] args) {
  4. Scanner in = new Scanner(System.in);
  5. String s = in.nextLine();
  6. StringBuilder sb = new StringBuilder();
  7. for (int i = 0 ; i < s.length(); i++) {
  8. if (Character.isDigit(s.charAt(i))) {
  9. sb.append("number");
  10. } else {
  11. sb.append(s.charAt(i));
  12. }
  13. }
  14. System.out.println(sb);
  15. }
  16. }

151.翻转字符串里的单词

这里我主要用的Java内置方法

String提供去除首位空格的trim方法和进行分割的split方法,StringBuilder提供reverse方法

中间用到\s+匹配一个或多个空格

  1. class Solution {
  2. public String reverseWords(String s) {
  3. String s0 = s.trim();
  4. String[] arr = s0.split("\\s+");
  5. StringBuilder sb = new StringBuilder();
  6. for (String i : arr) {
  7. StringBuilder rev = new StringBuilder(i);
  8. sb.append(rev.reverse()).append(" ");
  9. }
  10. return sb.reverse().toString().trim();
  11. }
  12. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/752984
推荐阅读
相关标签
  

闽ICP备14008679号