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

生产许可证查询官网福州搜索引擎优化公司

生产许可证查询官网,福州搜索引擎优化公司,站长如何做导航网站,网站备案后 如何建设1、怎么把一个数字转成字符串? int num1; ①使用String.valueOf(num)方法 ②使用包装类的toString()方法 Integer num1num; String str1num1.toString(); ③字符串拼接 String s""num; 当写完一个算法之后,运行不过的话,如果觉得代…

1、怎么把一个数字转成字符串?

int num=1;

①使用String.valueOf(num)方法

②使用包装类的toString()方法

Integer num1=num;

String str1=num1.toString();

③字符串拼接

String s=""+num;

当写完一个算法之后,运行不过的话,如果觉得代码逻辑没问题,那么就先从两个方面进行检查,是否是数值类型溢出问题,是否是算法复杂度太高而导致一部分运行超时

2、统计小写字母的频率

import java.util.Arrays;public class test1 {public static void main(String[] args) {int hash []=new int[26];String s="abracaddsfskf";for (int i = 0; i <s.length() ; i++) {//将字符转换成0~25的数值,转换之后,可以用作数组的索引,对应26个英文字母的位置hash[s.charAt(i)-'a']++;//++,这是为了统计某个字符出现的次数}System.out.println(Arrays.toString(hash));}
}

 

class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length() || s.equals(t)) {return false;}char[] s1 = s.toCharArray();char[] s2 = t.toCharArray();Arrays.sort(s1);Arrays.sort(s2);return Arrays.equals(s1, s2);}
}

 

3、哈希法

class Solution {public boolean isAnagram(String s, String t) {if (s.length() != t.length() || s.equals(t)) {return false;}int[] hash = new int[26];for (int i = 0; i < s.length(); i++) {hash[s.charAt(i) - 'a']++;}for (int j = 0; j < t.length(); j++) {hash[t.charAt(j) - 'a']--;}for (int k = 0; k < hash.length; k++) { // 修复:k-- → k++if (hash[k] != 0) {return false; // 直接返回,无需flag变量}}return true;}
}

哈希表问题:数组,set,map

 

 

用map集合解决,数组元素值做键,下标做值

return new int[] {-1,-1}

用map计算出nums1+nums2的和,和做键,和出现的次数做值,nums2+nums3的值同样这样表示,然后遍历map1,找map2中键为0-x的值

import java.util.HashMap;
import java.util.Map;public class fourSumCount {public int fourSumCount(int[] nums1, int[] nums2, int[] nums3, int[] nums4) {Map<Integer, Integer>map=new HashMap<>();Map<Integer,Integer>map1=new HashMap<>();for (int i = 0; i < nums1.length; i++) {for (int i1 = 0; i1 < nums2.length; i1++) {int sum1=nums1[i]+nums2[i1];if (map.containsKey(sum1)){map.put(sum1,map.get(sum1)+1);}else{map.put(sum1,1);}}}for (int i = 0; i < nums3.length; i++) {for (int i1 = 0; i1 < nums4.length; i1++) {int sum2=nums3[i]+nums4[i1];if (map1.containsKey(sum2)){map1.put(sum2,map1.get(sum2)+1);}else{map1.put(sum2,1);}}}int count=0;for (Map.Entry<Integer, Integer> entry : map.entrySet()) {if (map1.containsKey(-entry.getKey())){count+=map1.get(-entry.getKey())*entry.getValue();}}return count;}
}

怎么把StringBuilder类型的数据转成String类型?

调用toString()方法 ;String str=sb.toString();

删除字符串前后的空格

String str=new String();

str=str.trim();//删除字符串前后的空格

KMP算法

最长相等前后缀:

在一个字符串中,既是其前缀又是其后缀的最长子串的长度,且该子串不能等于原字符串本身。具体来说:

  1. 前缀:从字符串开头开始的任意子串(不包括自身)。

  2. 后缀:从字符串末尾结束的任意子串(不包括自身)。

  3. 最长相等前后缀:在所有满足既是前缀又是后缀的子串中,长度最大的那个。

示例说明:

  • 字符串 "abab"

    • 前缀集合:"a", "ab", "aba"

    • 后缀集合:"b", "ab", "bab"

    • 最长相等前后缀为 "ab",长度为 2

应用场景:

在KMP算法中,通过构造部分匹配表(next数组)记录每个位置的最长相等前后缀长度,用于在字符串匹配失败时快速调整模式串的位置,减少不必要的比较。

计算方法(构建next数组):

1、初始化:next[0]=0,指针j=0。

2、遍历字符串(i从1开始)

若当前字符s[i]==s[j],则j++,next[i]=j;

否则,若j>0,回退j=next[j-1];否则next[i]=0.

import java.util.Arrays;public class Day42 {public static void main(String[] args) {String str="abab";System.out.println(Arrays.toString(varcher(str)));}public static int[] varcher(String str){int len = str.length();int []next=new int[len];next[0]=0;int j=0;for (int i = 1; i < len; i++) {if (str.charAt(i)==str.charAt(j)){j++;next[i]=j;}else{if (j>0){j=next[j-1];}else{next[i]=0;}}}return next;}
}

查找子字符串在原字符串中首次出现的索引位置

Java中的indexOf方法用于查找子字符串在原字符串中首次出现的索引位置。

KMP算法是解决字符串匹配问题的高效算法,其核心是通过预处理模式串构建next数组来跳过不必要的匹配。

1、KMP算法核心步骤

(1)构建next数组

next数组用于记录模式串(needle)每个位置的最长公共前后缀长度,帮助快速回溯。

构建方法:

  • 初始化next[0]=0,双指针i=1(后缀尾),j=0(前缀尾)。

  • 遍历模式串,根据字符是否匹配更新j的值:

  • 匹配时:j++,next[i]=j,i++

  • 不匹配时:j回退到next[j-1]

  • 最终next数组几位每个位置的最长公共前缀

(2)双指针匹配

  • 主指针i遍历haystack,模式指针j遍历needle。

  • 当字符匹配时,双指针同时后移。

  • 当不匹配时,j根据next[j-1]回退,i不动。

  • 当j达到needle长度时,匹配成功。

如果一个字符串是由重复子串组成的,那么他的最小重复单位就是他的最长相等前后缀不包含的那一部分

回溯法

回溯法解决的问题

  • 组合问题:N个数里面按一定规则找出k个数的集合

  • 切割问题:一个字符串按一定规则有几种切割方式

  • 子集问题:一个N个数的集合里有多少种符合条件的子集

  • 排列问题:N个数按一定规则全排列,有几种排列方式

  • 棋盘问题:N皇后,解数独等等

组合是不强调元素顺序的,排列是强调元素顺序的。

回溯法解决的问题都可以抽象为树形结构,回溯法解决的都是在结合中递归查找子集,集合的大小就构成了书的宽度,递归的深度就构成了树的深度。

void backtracking(参数){if(终止条件){存放结果;return;}for(选择:本层集合中元素(数中节点孩子的数量就是集合的大小)){处理节点;backtracking(路径,选择列表);//递归回溯,撤销处理结果     }
}

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

相关文章:

  • 天水有做网站的地方吗今日十大热点新闻事件
  • 制作网站需要什么成本微信裂变营销软件
  • 时时彩网站代理怎么做营销软文范例大全300字
  • 江西城乡和建设委员会网站网址信息查询
  • 网站网络推广教程中国国家人事人才培训网证书查询
  • 成都企业网站商城定制中国十大电商培训机构
  • 网站制作的基本步骤是seo海外
  • 做网站banner嵌入式培训机构哪家好
  • 情人做网站电商网站
  • 洋县住房和城乡建设管理局网站seo关键词首页排名代发
  • 网站开发企业网络营销专业可以干什么工作
  • 做自己任务的网站网络营销的概念和特点是什么
  • 个人如何在企业网站做实名认证在百度怎么发布作品
  • 装修店铺seo优化步骤
  • 百度推广开户费用标准seo排名工具
  • 旅游网站如何做google服务框架
  • 四川省城乡住房和建设厅网站移投界seo
  • 深圳宝安国际机场seo官网优化详细方法
  • 灵武住房和城乡建设厅网站如何宣传推广产品
  • 延吉网站建设depawo网络推广外包想手机蛙软件
  • wordpress不能安装插件优化防疫措施
  • 濮阳网站建设 公司名字境外电商有哪些平台
  • 群晖wordpress站点地址宣传方式有哪些
  • 做网站还需要买空间吗互联网营销师
  • 大悟网站开发免费二级域名分发
  • 中山建网站多少钱留电话的广告网站
  • 深圳做网站龙华新科竞价服务托管价格
  • 网站建设林晓东seo是什么意思 为什么要做seo
  • 建设网站的行业现状分析武汉千锋教育培训机构怎么样
  • 公司需要做网站吗优化推广公司哪家好