day8--● 344.反转字符串● 541. 反转字符串II● 卡码网:54.替换数字● 151.翻转字符串里的单词● 卡码网:55.右旋转字符串

 344.反转字符串 

        题目链接:力扣(LeetCode)官网 - 全球极客挚爱的技术成长平台

class Solution {
    public void reverseString(char[] s) {
        for(int i = 0,j = s.length-1; i < j; i++,j--){
            char c = s[i];
            s[i] = s[j];
            s[j] = c;
        }
        return;
    }
}

 541. 反转字符串II

题目链接:541. 反转字符串 II - 力扣(LeetCode)

class Solution {
    public String reverseStr(String s, int k) {
        char[] ch =s.toCharArray();
        for(int i = 0; i < ch.length; i += 2*k){
            if(i+k <= ch.length){
                reverse(ch,i,i+k-1);
                continue;
            }
            reverse(ch,i,ch.length-1);
        }
        return new String(ch);
    }

    public void reverse(char[] ch,int i,int j){
        char temp = ch[i];
        ch[i] = ch[j];
        ch[j] = temp;
    }
}

总结:

Spring类是不能直接使用.length的,必须是char [ ]才行

 卡码网:54.替换数字 

题目链接:题目页面 (kamacoder.com)

import java.util.Scanner;

class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        String s = in.nextLine();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < s.length(); i++) {
            if (Character.isDigit(s.charAt(i))) {
                result.append("number");
            }else result.append(s.charAt(i));
        }
        System.out.println(result);
    }
}

总结:

Java里的string不能修改

 151.翻转字符串里的单词 

题目链接:151. 反转字符串中的单词 - 力扣(LeetCode)

class Solution {
    public String reverseWords(String s) {
        //去除多余的空格
        StringBuilder result =  removeSpace(s);
        //反转整个字符串
        reverseString (result,0,result.length()-1);
        //反转整个单词
        reverseWords (result);

        return result.toString();
    }

    public StringBuilder removeSpace(String s){
        int start = 0;
        int end = s.length()-1;
        while(s.charAt(start) == ' ') start++;
        while(s.charAt(end) == ' ') end--;
        StringBuilder result = new StringBuilder();
        while(start <= end){
            char c = s.charAt(start);
            if(c != ' ' || s.charAt(start+1) != ' '){
                result.append(c);
            }
            start++;
        }
        return result;
    }

    public void reverseString(StringBuilder result, int start, int end){
        while(start < end){
            char temp = result.charAt(start);
            result.setCharAt(start,result.charAt(end));
            result.setCharAt(end,temp);
            start++;
            end--;
        }
    }

    public void reverseWords(StringBuilder result){
        int start = 0;
        int end = 1;
        int n =result.length();
        while(start < n){
            while(end < n && result.charAt(end) != ' '){
                end++;
            }
            reverseString(result,start,end-1);
            start = end+1;
            end = start+1;
        }
    }

}

总结:

三步骤:1.去括号,2.整个反转,3.单词反转。

StringBuilder常用API:StringBuilder (Java SE 11 & JDK 11 ) (runoob.com)

卡码网:55.右旋转字符串 

题目链接:题目页面 (kamacoder.com)

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = Integer.parseInt(in.nextLine());
        String s = in.nextLine();

        int len = s.length();  
        char[] chars = s.toCharArray();
        reverseString(chars, 0, len - n - 1);  
        reverseString(chars, len - n, len - 1);  
        reverseString(chars, 0, len - 1);  

        System.out.println(chars);

    }

    public static void reverseString(char[] ch, int start, int end) {
        char temp;
        while (start < end) {
            temp = ch[end];
            ch[end] = ch[start];
            ch[start] = temp;
            start++;
            end--;
        }
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林中晚霞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值