字符串入门算法题!

news2024/11/23 0:41:29
概述

字符串和数组一样算是比较简单的题目,正适合打算法基础,一定要认真对待!!!

字符串类型的算法问题可以分为简单、中等和困难的难度级别,基础类型一些基本的字符串处理问题,如字符串的拼接、反转、查找子串等,通常比较容易。更复杂的问题,如字符串匹配、编辑距离、回文检测、子序列问题等,难度可能会增加。

一些字符串算法问题可能涉及到高级的数据结构和算法,如动态规划、字符串匹配算法(KMP、Boyer-Moore 等)、后缀数组、正则表达式等。这些问题可能对算法和数据结构的理解要求较高,可能会更具挑战性,所以,要先打好字符串基础

典型题目

反转字符串

//送分题,不说了
class 字符串反转344{
    public void reverseString(char[] s) {
       char temp=' ';
        for (int i = 0; i <s.length/2 ; i++) {
            temp=s[i];
            s[i]=s[s.length-1-i];
            s[s.length-1-i]=temp;
        }
        System.out.println(s);
    }
}

反转字符串II

给定一个字符串 s 和一个整数 k,从字符串开头算起, 每计数至 2k 个字符,就反转这 2k 个字符中的前 k 个字符。

如果剩余字符少于 k 个,则将剩余字符全部反转。

如果剩余字符小于 2k 但大于或等于 k 个,则反转前 k 个字符,其余字符保持原样。

示例:

输入: s = “abcdefg”, k = 2
输出: “bacdfeg”

思路:

  1. 将字符串转换为字符数组,因为字符串是不可变的,而字符数组可以修改。
  2. 遍历字符数组,每次处理 2k 长度的子字符串。
  3. 对每个 2k 长度的子字符串,反转前 k 个字符,如果剩余字符不足 k 个,则将其全部反转。
  4. 返回最终的字符数组作为结果。

先把按顺序反转每2k个字符的前k个,并判断此时剩余的是否大于k个

题目重点:判断此时剩余字符大于2k还是小于2k大于k,还是小于k;

精华:int right = Math.min(i + k - 1, n - 1);

解释:i每次加2k,加完判断此时右侧是2k为边界还是以字符串最终长度n为边界,n为总长度

class 反转字符串II {
    public String reverseStr(String s, int k) {
        char[] charArray = s.toCharArray();//把字符串转换成字符数组存起来
        int n = s.length();
        for (int i = 0; i < n; i += 2 * k) {//每次加2k个
            int left = i;
            int right = Math.min(i + k - 1, n - 1); // 反转的前 k 个字符
        //   i每次加2k,加完判断此时右侧是2k为边界还是以字符串最终长度n为边界,
        //   这样写可以直接包含最后剩的数k<x<2k,和0<x<k这两种情况,即
        //   1.当k<x<2k时,边界不变,正常运行,i会再次加2k,发现大于n,直接退出;
        //  2.当0<x<k时,右边界直接是n-1,反转剩余所有字符串,之后加2k大于n,退出
           while (left < right) {
           //左侧大于右侧才反转操作,设定左右双指针
                char temp = charArray[left];
                charArray[left] = charArray[right];
                charArray[right] = temp;
                left++;
                right--;
            }
        }
        return new String(charArray);
    }
}

替换空格

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1: 输入:s = “We are happy.”
输出:“We%20are%20happy.”

思路:

1.肯定是要先搞一个字符数组储存字符串,

注意点!!!选用扩容而不是建新数组的方式

替换空格

就是先遍历判断空格,遇到空格,就在字符串后边新添加两个空格。

之后用用双指针最简单,左右指针指向原字符串和新字符串结尾,并向左遍历,直到left=righ时,退出。

​ 代码示例不一定对(原题被更改了,无法判断对错哦)

public class 替换空格II {
    //双指针!!一定要记得熟练使用哦!
    public String pathEncryption(String path) {
        int a=0;
        char []b = path.toCharArray();
        for (int i = 0; i <b.length; i++) {
            if(b[i] ==' ')
                a=a+2;
        }
        a=a+b.length;
        char[] c =new char[a];
        int left=b.length-1;
        int right=c.length-1;
        while (left!=right) {
            for ( left =b.length-1; left >=0 ; left--,right--) {
                if(b[left]!=' ')c[right]=b[left];
                if(b[left]==' ')
                {c[right]='0';
                    c[right--]='2';
                    c[right--]='%';
                }
            }
        }
        return  new String(c);
    }
}

翻转字符串里的单词

给定一个字符串,逐个翻转字符串中的每个单词。

示例 1:
输入: “the sky is blue”
输出: “blue is sky the”

大家下去自己试试吧~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1259052.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023加拿大毕业典礼:共赴一场相遇 遥望未来可期

放眼国际金融&#xff0c;启幕璀璨时代。加拿大时间2023年11月14-16日&#xff0c;中国人民大学-加拿大女王大学金融硕士2023届行业高管班及国际班毕业生们携亲友&#xff0c;参加了为期3天的毕业庆祝活动&#xff0c;从加拿大女王大学史密斯商学院的多伦多教学区到女王大学的金…

随手写了个博客多平台发布脚本:Python自动发布文章到Wordpress

​ 引言 作为一名技术博主&#xff0c;提高博客发布效率是我们始终追求的目标。在这篇文章中&#xff0c;我将分享一个基于Python的脚本&#xff0c;能够实现博客多平台发布&#xff0c;具体来说&#xff0c;是自动发布文章到WordPress。通过这个简单而高效的脚本&#xff0c…

考试周刊杂志考试周刊杂志社考试周刊编辑部2023年第46期目录

教育教学研究 丰富作业形式 拓展课堂教学——“双减”下初中英语优化作业设计探析 王慧; 1-5 博学慎思明辨 撬动思维杠杆——论“思辨性阅读与表达”学习任务群范式构建 丁亚琴; 6-10《考试周刊》投稿邮箱&#xff1a;cn7kantougao163.com(注明投稿“《考试周刊》”) 崔…

折线图,样式调整background、serice、xAxis、yxAis等

效果展示&#xff1a; option参数&#xff1a; let option {backgroundColor: "rgba(48, 65, 90, 1)",title: {// text: obj.stnm,// subtext: obj.datasource,textStyle: {color: "#ffffff"},right: 10// left: center,// itemGap: 4},tooltip: {trigge…

JOSEF 综合继电器 HJZZ-32/2 AC220V 合闸延时整定0.02-9.99S

系列型号&#xff1a; HJZZ-91分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/1分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/2分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/2A分闸、合闸、电源监视综合装置&#xff1b; HJZZ-92/3分闸、合闸、电源监视综…

乐鑫推出 ESP ZeroCode ExL 模组

乐鑫推出 ESP ZeroCode ExL 模组&#xff0c;由 AWS IoT ExpressLink 提供支持&#xff0c;可简化用户构建兼容 Matter 的云连接设备。 为简化 Matter 设备的开发&#xff0c;乐鑫在年初发布了 ESP ZeroCode 模组和 ESP ZeroCode 控制台。ESP ZeroCode 模组非常适合一些简单设…

Gin框架如何使用并搭建一个后台管理系统 RBAC 权限管理(六)

一、RBAC 实现流程 1 、实现角色的增、删、改、查 2 、实现用户的增、删、改、查,增加修改用户的时候需要选择角色 3 、实现权限的增、删、改、查 (页面菜单) 4 、实现角色授权功能 5 、判断当前登录的用户是否有访问菜单的权限 6 、根据当前登录账户的角色信息动态显…

如何解决msvcp140.dll丢失问题,分享5个亲测有效的方法

在计算机使用过程中&#xff0c;我们经常会遇到一些错误提示&#xff0c;其中之一就是“msvcp140.dll丢失”。这个错误通常会导致某些应用程序无法正常运行。msvcp140.dll是Microsoft Visual C 2015 Redistributable Package的一部分&#xff0c;它是由Microsoft公司提供的运行…

seata集成springboot的一些错误小计

1 seata依赖没找到 dependencies.dependency.version for com.alibaba.cloud:spring-cloud-starter-alibaba-seata:jar is missing. line 126, column 21错误原因:未指定具体的seata版本 解决 <!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-st…

C语言:写一个函数,求字符串的长度,在main函数中输入字符串并输出其长度(指针)

分析&#xff1a; 在程序中&#xff0c;定义一个函数 fix&#xff0c;该函数使用指针变量来访问字符串中的每个字符&#xff0c;并计算出字符串的长度。fix 函数的参数为指向 char 类型的指针变量 p&#xff0c;表示需要计算长度的字符串。 在主函数 main 中&#xff0c;定义一…

全自动气象监测站天气预测的革新者

随着科技的不断进步&#xff0c;我们的生活变得越来越智能化。其中&#xff0c;WX-CQ12 全自动气象监测站以其精准的数据和实时的天气预报&#xff0c;成为了天气预测的革新者。本文将详细介绍全自动气象监测站的优势及其对人们生活的影响。 一、全自动气象监测站的优势 精准…

怎么把视频声音提取成MP3?一分钟解决!

有的时候&#xff0c;我们在看一些综艺访谈节目的时候&#xff0c;觉得里面干货满满&#xff0c;会忍不住想单独把音频下载出来单独听&#xff0c;还可以防止会员到期后不可以再播放&#xff0c;下面就向大家介绍三种好用的视频音乐提取成MP3的方法。 方法一&#xff1a;使用野…

HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

HTTP 和 HTTPS 是两种常见的网络协议&#xff0c;它们都是用于在浏览器和服务器之间传输数据的。但是&#xff0c;它们之间也有一些重要的区别&#xff0c;这些区别涉及到数据的安全性、传输性能、使用成本和搜索排名等方面。本文将从以下几个方面来介绍 HTTP 和 HTTPS 的区别&…

loadrunner-导入Fiddler数据包方法

文章目录 一、Fiddler获取相关接口&#xff0c;保存为.saz格式二、在loadrunner12中新建脚本&#xff0c;选择协议为HTTP/HTML&#xff0c;然后在录制选项中录制模式选为捕获的流量文件分析&#xff0c;然后选择刚保存的saz文件三、生成完脚本后&#xff0c;点击“关联”可自动…

安防视频监控/磁盘阵列/集中云存储平台EasyCVR设备录像保活不生效原因是什么?该如何解决?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

c语言实现猴子选大王问题

办法如下: 猴子按1,2…n编号围坐一圈, 从第一只开始按1,2,…m报数, 报m的退出, 从下一只开始, 继续循环报数, 剩下的最后一只猴子就是大王, 编程输出大王的序号。 代码如下&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int strarray(int* p, int m…

Goby新功能大揭秘:低感知扫描模式,让你的挖洞之旅更丝滑!

​​0x01 前言 在上一篇文章中&#xff0c;详细介绍了如何利用Goby最新的插件成功打通了全自动化渗透测试流程&#xff0c;并且初步还取得了不错的成绩&#xff0c;很多师傅们都纷纷表示想体验一波。由于账号的限制&#xff0c;暂时还不能第一时间体验。但&#xff01;还记得上…

如何使用Portal产品配置信息展现

门户集成平台可以根据用户的商业需求&#xff0c;以及用户使用特点和所处角色的不同&#xff0c;形成的个性化的应用结构&#xff0c;Portal门户集成平台是一种用于构建企业级门户网站的软件平台&#xff0c;它提供了一个统一的入口&#xff0c;将各种应用程序、信息资源和服务…

DGL中NN模块的构造函数

上图引用自&#xff1a;dgl用户文档第三章(nn模块编写&#xff09; """构造函数完成以下几个任务&#xff1a; 1、设置选项。 2、注册可学习的参数或者子模块。 3、初始化参数。""" import torch.nn as nn from dgl.utils import expand_as_pai…

使用opencv实现图像滤波

1 图像滤波介绍 滤波是信号和图像处理中的基本任务之一&#xff0c;其旨在有选择地提取图像的某些特征&#xff0c;可以用于在给定应用程序的上下文中传达重要信息&#xff0c;例如&#xff0c;去除图像中的噪声、提取所需的视觉特征、图像重采样等。 1.1 图像滤波理论 图像…