首页 > 编程语言 >代码随想录 第八天 | 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字 ● 151.翻转字符串里的单词 ● 卡码网:55.右旋转字符串 . (151 55 放弃 可能要用

代码随想录 第八天 | 344.反转字符串 ● 541. 反转字符串II ● 卡码网:54.替换数字 ● 151.翻转字符串里的单词 ● 卡码网:55.右旋转字符串 . (151 55 放弃 可能要用

时间:2024-02-29 21:23:59浏览次数:42  
标签:卡码 151 String int charArray length 字符串 public

LeetCode:344. 反转字符串 - 力扣(LeetCode)

思路: 双指针的想法用while循环遍历两侧指针,效率高

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

LeetCode:541. 反转字符串 II - 力扣(LeetCode)

思路:一般来说可能要用i++,但这道题可以直接2k走,判断到剩余字符串长度不满足2k走两个题目上的条件。

可笑的是,第一步,第二步可以用一行代码解决,好离谱。。。

 等同

啊!

还有一个min的更看不懂了

 一行就搞完了.....

class Solution {
    public String reverseStr(String s, int k) {
        char[] charArray = s.toCharArray();
        int start = 0;
        for(int i = start; i < charArray.length; i += 2 * k){
            //先按2k走,i + k 超出看剩余
            if (i + k <= charArray.length) {
                reverse(charArray,i,i + k - 1);
                continue;
            }

            //第一步:剩余字符大于k,小于2k,反转前k个
            if( charArray.length - i >= k && charArray.length - i < 2 * k){
                reverse(charArray,i,i + k -1);
            }
            //第二步: 剩余少于k,全部翻转
            if( charArray.length - i< k ){
                reverse(charArray,i,charArray.length - 1);
            }

        }
        return new String(charArray);
    }
//反转
    public void reverse(char[] s, int i, int i1) {
        for(;i < i1;i++,i1--){
            char temp = s[i];
            s[i] = s[i1];
            s[i1] = temp;
        }

    }
}

卡码网:题目页面 (kamacoder.com)

思路:直接append替换就好。

//Character.isDigit(s.charAt(i)) 是一个更简洁的方式来检查字符串中的字符是否为数字

//charAt 方法来遍历字符串中的每个字符,判断是否为数字,然后进行替换。

//append 方法实际上是用于在字符串构建器(StringBuilder)的末尾添加字符或字符串,其实就是替换。

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
                    Scanner sc = new Scanner(System.in);
                    String c = sc.nextLine();
                    StringBuilder sb = new StringBuilder();

                    for(int i = 0; i < c.length(); i++){
                        if(c.charAt(i) >= '0' && c.charAt(i) <= '9' ){
                            //替换
                            sb.append("number");
                        }
                        else
                            sb.append(c.charAt(i));
                }
                String res = sb.toString();
                    System.out.print(res);

        }

    }

 

标签:卡码,151,String,int,charArray,length,字符串,public
From: https://www.cnblogs.com/lengbo/p/18044275

相关文章

  • 1047. 删除字符串中的所有相邻重复项 c
    char*removeDuplicates(char*s){intns=0;while(s[ns]!=0)ns++;if(ns<=1)returns;char*stack=(char*)malloc(sizeof(char)*ns);for(inti=0;i<ns;i++)stack[i]=0;inttop=0;stack[0]=s[0];for(inti=1;i<ns;i++){......
  • 459. 重复的子字符串 c
     boolrepeatedSubstringPattern(char*s){intns=0;while(s[ns]!=0)ns++;if(ns<=1)returnfalse;boolsame=true;chartemp=s[0];inti=1;for(;i<ns;i++){if(s[i]!=temp)same=false;if(ns%i==0&&......
  • 55. 右旋字符串 C
    #include<stdio.h>voidreverse(char*s,inthead,inttail){while(head<=tail){chartemp=s[head];s[head]=s[tail];s[tail]=temp;head++;tail--;}}chars[10000]={0};intmain(){intk=0;sc......
  • 151. 反转字符串中的单词 c
    现在解决一个中等难度的题得要30min,争取在复试的时候提升到只有15min!!!!voidrevesestring(char*s,inthead,inttail){while(head<=tail){chartemp=s[head];s[head]=s[tail];s[tail]=temp;head++;tail--;}}char*rev......
  • PGSQL_数字转换成字符串去尾0
    应用场景当前钢板存储厚度,字段是numeric(20,2)类型;型材存储规格,字段是varchar(50)类型。现在做拼接,若钢板类型就是名称厚度,若型材类型就是名称规格。根据拼接的数据做过滤,即对名称厚度(名称规格)做过滤。实现举例例如表中有两条数据:名称(name)=钢板一号,厚度(thick)=100.0......
  • 541. 反转字符串 II C
    voidreverse_string(char*s,inthead,inttail){while(head<=tail){chart=s[head];s[head]=s[tail];s[tail]=t;head++;tail--;}}char*reverseStr(char*s,intk){intssize=0;while(s[ssize]!=......
  • 简单字符串 学习笔记
    目录字符串哈希字典树字典树的倒序建树KMP正文1.字符串哈希1.1基础可以在数字和字符串之间快速转化。考虑一个哈希函数:\(f(s)=(\sum\limits_{i=0}^{n}s_i\timesbase^{n-i+1})\)。容易发现这些值是唯一的。但是取模时需要选一个较大模数,减少冲突概率。cons......
  • 代码随想录算法训练营day08 | leetcode 344. 反转字符串、541. 反转字符串 II、54. 替
    目录题目链接:344.反转字符串-简单题目链接:541.反转字符串II-简单题目链接:[54.替换数字](题目页面(kamacoder.com))题目链接:151.反转字符串中的单词-中等题目链接:[55.右旋字符串](题目页面(kamacoder.com))题目链接:344.反转字符串-简单题目描述:编写一个函数,其作用是将......
  • delphi Byte 与 字符串(AnsiString、WideString) 相互转换
    Byte与字符串(AnsiString、WideString)相互转换代码String转ByteprocedureTForm1.Button1Click(Sender:TObject);varbuf:TBytes;I:Integer;begin//ANSI编码buf:=BytesOf('测试内容');Memo1.Lines.Add('ANSI编码');forI:=0toLength(buf)......
  • FastAPI系列:查询字符串参数
    单个查询字符串@app.get('/index/{username}')defindex(username:str,id:int):#id为查询字符串?id=5return{"message":"success","username":username,"id":id}可选的查询字符串参数@app.get('/items/{item_id}......