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

网站设计报价单关键词吉他谱

网站设计报价单,关键词吉他谱,wordpress前端登陆 投稿,物流公司网站怎么做【算法方法总结四】字符串操作的一些技巧和注意事项 【算法方法总结一】二分法的一些技巧和注意事项【算法方法总结二】双指针的一些技巧和注意事项【算法方法总结三】滑动窗口的一些技巧和注意事项【算法方法总结四】字符串操作的一些技巧和注意事项 【字符串操作】 此章节涉…

【算法方法总结·四】字符串操作的一些技巧和注意事项

  • 【算法方法总结·一】二分法的一些技巧和注意事项
  • 【算法方法总结·二】双指针的一些技巧和注意事项
  • 【算法方法总结·三】滑动窗口的一些技巧和注意事项
  • 【算法方法总结·四】字符串操作的一些技巧和注意事项

【字符串操作】

此章节涉及到以下 3 个问题

  • (1)API
  • (2)自定义方法
  • (3)字符串匹配

API

关于 String 的一些常用用法

String str = "abca";// 1、字符串大小 length()
int len = str.length(); // 4// 2、将字符串对象中的字符转换为一个字符数组 toCharArray()
char[] ss = str.toCharArray();
for (char c : str.toCharArray()){   System.out.print(c + " "); // 输出:a b c d 
}  // 3、字符数组 -> 字符串 valueOf()
String s = String.valueOf(ss); // abcd// 4、区分大小写 equals()
boolean isEqual1 = str.equals("abcA"); // false// 5、不区分大小写 equalsIgnoreCase()
boolean isEqual2 = str.equalsIgnoreCase("AbcA"); // true// 6、返回字符在字符串第一次出现的索引    
int idx1 = str.indexOf('a'); // 0// 7、返回字符在字符串最后一次出现的索引
int idx2 = str.lastIndexOf('a'); // 3// 8、从索引n开始截取后面所有的内容 substring(n)
String substr1 = str.substring(2); // ca// 9、从索引i开始截取,到第n个字符[i,n) substring(i,n)
String substr2 = str.substring(1,3); // bc// 10、转为大写
String upper = str.toUpperCase(); // ABCA// 11、转为小写
String lower = str.toLowerCase(); // abca// 12、拼接字符串
String newStr = str.concat("123"); // abca123 // 13、用y替代x replace(x,y) 
String replaced = str.replace('a','z'); //zbcz // 14、分割字符串(某些字符需要转移) split() 
String splitStr = "a,b,c";
String[] parts = splitStr.split(","); // {"a","b","c"}// 15、前者大,返回正,后者大,返回负,相等为0
str.compareTo() // 16、格式化字符串(与c语言类似)
str.format() // 17、移除字符串两端空白字符
str.trim() 

自定义方法

很多地方会 要求不能 使用 JavaAPI 函数,所以有些方法得会 自己写
例如 151.反转字符串中的单词

1.移除多余空格(首尾空格)

	// 1、移除多余空格 private StringBuilder reverseSpace(String s) {int start = 0;int end = s.length() - 1;while (s.charAt(start) == ' ') start++; // 移除串首空格while (s.charAt(end) == ' ') end--; // 移除串尾空格StringBuilder sb = new StringBuilder();while (start <= end) {char c = s.charAt(start);// 当前字符c与sb串尾字符不同时为' '时,加入sbif (c != ' ' || sb.charAt(sb.length() - 1) != ' ') {sb.append(c);}start++;}return sb;}

2.将整个字符串反转

	// 2、将整个字符串反转public void reverseString(StringBuilder sb, int start, int end) {while (start < end) {char t = sb.charAt(start);sb.setCharAt(start, sb.charAt(end));sb.setCharAt(end, t);start++;end--;}}

3.将每个单词反转

    private void reverseEachWord(StringBuilder sb) {int start = 0;int end = 1;int n = sb.length();while (start < n) {// 找到单词末尾的空格的索引endwhile (end < n && sb.charAt(end) != ' ') {end++;}// end-1为单词末尾的索引reverseString(sb, start, end - 1);start = end + 1;end = start + 1;}}

字符串匹配

KMP 算法

  • 当出现 字符串不匹配 时,可以知道一部分 之前已经匹配 的文本内容,可以利用这些信息避免从头再去 做匹配了

  • next 数组 就是一个前缀表,记录下标i之前(包括i)的字符串中,有多大长度相同前缀后缀

  • 前缀表 是用来 回退 的,它记录了 模式串主串(文本串) 不匹配的时候,模式串应该从哪里开始重新匹配


最长公共前后缀(这里用了 宫水三叶 的图便于理解)
  • 前缀是指不包含最后一个字符的所有以第一个字符开头的连续子串

  • 后缀是指不包含第一个字符的所有以最后一个字符结尾的连续子串

请添加图片描述
请添加图片描述

next 数组的构建
  • 前缀 是指 不包含最后一个字符 的所有以第一个字符开头的连续子串。
  • 后缀 是指 不包含第一个字符 的所有以最后一个字符结尾的连续子串。
  • next 数组有 很多种不同的写法,但只影响 其不匹配时 寻找 重新匹配位置 的方法
  • j 指向 前缀末尾 位置,i 指向 后缀末尾 位置
  • 在这里我采取了 next 和 前缀表 PM 相同的方法,在这种情况下,重新匹配位置 看前一个位置的 next 数组,如下图所示,j=1, i=2, s[j]!=s[i]时,需要重新匹配,j 要回退到前一个位置的 next 数组(即 next[j-1]
    在这里插入图片描述
// 得到 next数组,其实就是 PM 数组
public void getNext(int[] next, String s) {char[] ss = s.toCharArray(); // j 指向前缀末尾位置,i 指向后缀末尾位置int j = 0;next[0] = 0; // 第一位为 0for(int i = 1; i < s.length(); i++) {// 不匹配时,循环回退 j while(j > 0 && ss[i] != ss[j]){j = next[j - 1];}// 匹配时,j++,继续匹配if(ss[i] == ss[j]){j++;}// j 同时也指前后缀相等的个数next[i] = j;}
}

相关力扣题

  • 相关解法见【算法题解答·四】字符串操作

151.反转字符串中的单词

28.找出字符串中第一个匹配项的下标

459.重复的子字符串

http://www.dtcms.com/wzjs/65104.html

相关文章:

  • 做网站图标的软件个人怎么做百度竞价
  • 做一个b2b网站网站设计公司建设网站
  • 做网上竞猜网站合法吗seo优化公司排名
  • 宁夏网站建设电话进入百度首页官网
  • 广西医疗网站建设肇庆seo按天收费
  • 设计个网站多少钱军事新闻头条最新消息
  • 学做粤菜的网站域名注册后怎么使用
  • 网站如何做404页面简述搜索引擎的工作原理
  • 哪里有做网站开发排名优化课程
  • 建设网站参数微博今日热搜榜
  • 烟台网站建设求职简历深圳关键词排名优化系统
  • 项目外包 网站开发31省市新增疫情最新消息
  • 网站建设套模版精准推广引流5000客源
  • 企业营销网站建设的基本步骤怎么做优化关键词
  • 网站建设功能需求网络整合营销案例
  • 做任务兼职赚钱的网站广告投放优化师
  • 杭州软件定制开发广州 关于进一步优化
  • 制作表白网页seo排名点击手机
  • dz怎么做视频网站如何引流被动加好友微信
  • 做企业公示的数字证书网站东莞市网络营销公司
  • 公司企业网站软文推广的好处
  • 深圳高端网站制作公司seo流量
  • 内蒙网网站移动端优化工具
  • 做网站 兼职网络广告的优势有哪些
  • 深圳市建设厅网站搜索引擎优化期末考试答案
  • 美橙建站之星怎么样人民日报最新头条10条
  • 菏泽手机网站建设软文类型
  • 动态网站设计与制作抖音推广
  • 如何在阿里云自主建网站推广下载app拿佣金
  • wordpress wpinc成都网站排名优化公司