• 统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和


    统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和

    1.题目

    统计字符串中子串个数 统计字符串中子串个数 包括重复和不重复 统计个子串中只出现一次的个数总和 和子串中出现不同种类的个数总和

    例如 给定一个字符串 s = 'ababc'

    则它的子串有
    ab
    aba
    abab
    ababc
    b
    ba
    bab
    babc
    a
    ab
    abc
    b
    bc
    c

    一共15个子串

    对于子串 ab 出现个数为 2(a ,b)

    对于子串a b a 只出现一次个数为 1 (b)

    对于子串abab 只出现一次个数为0(分别为 a b)

    ……

    对于子串 ab 出现不同种类字符个数为 2(a ,b)

    对于子串aba 出现不同种类字符个数为2 (a,b)

    对于子串abab 出现不同种类字符个数为2(分别为 a b)

    ……

    求输入一个字符串 分别统计子串只出现一个个数总和 和 出现不同种类个数总和

    2.代码如下:

    //求字符分值 意思就是输入一个字符串 然后对每一个子串统计只出现一次的字符 最终加起来就是总和

    	  //例如 f('ab') = 2  f('aa') = 0
    	int count = 0 ;//用于统计所有子串只出现一次字符的个数总和
    	 Scanner sc = new Scanner(System.in);
    	 System.out.print("请输入一个字符串:");
    	 String s = sc.nextLine();
    	 HashMap<Character,Integer> hs = new HashMap<>();
    	 HashSet<String> h = new HashSet<>();
    	 for(int i = 0 ; i<s.length();i++) {//遍历字符串
    		 for(int j =i+1;j<= s.length();j++) {
    			 System.out.println(s.substring(i,j));//我们可以输出所有的子串
    			
    			 String s1 = s.substring(i,j);//获取每一个子串
    			 h.add(s1);//用hashSet()进行统计不重复的子串
    			 char[] arr = s1.toCharArray();//我们把字符串转换成字符数组
    			 for(char c:arr) {//对字符进行遍历  
    				 if(!hs.containsKey(c)) {//判断map里面是否包含该字符的键值  如果没有我们就添加  
    					 hs.put(c,1);//
    					 count++;//对应的加一
    				 } else {//如果存在那么我们要减一
    					 count--;
    					// continue;//统计子串中出现的种类的个数 例如:子串ab  则个数为 2  (a和b) 子串 abac  为3
    				 }
    			 }
    			 for(char c:arr) {
    				 hs.remove(c);//我们遍历完一个字符串我们就全部删除  然后 下一个字符串继续存入进去
    			 }
    		 }
    	 }
    	 System.out.println(count);
    	 System.out.println(h.size());//输出set里面所有的字符串就是不重复的字符串
    }
    

    }

    3.联系方式

    由于我的水平有限 肯定这个做法不是最好的 但是 我才刚刚开始 所以各位大佬不要喷我 (哈哈) 这个适合小白学习 如果对你有帮助 记得赞一个呀 有什么问题也可以联系我

    qq:2061302791

    微信:xie2061302791

    电话:15284524485

    个人网站:https://xieyingpeng.github.io

    Github:https://github.com/xieyingpeng/

    博客园:https://www.cnblogs.com/Xieyingpengz

    知乎:https://www.zhihu.com/people/nan-qiao-12-73

    gitee:https://gitee.com/xie-yingpeng/project-1.git

    bilibili:https://space.bilibili.com/617198338?share_medium=android&share_source=copy_link&bbid=XY2BDF522C748A159BE7DD354D6DFFB963728&ts=1612520115798![]

  • 相关阅读:
    [javascript] vuejs为输入框增加回车事件
    iview上的兼容性问题
    python+vscode安装与插件配置
    Chrome浏览器获取XPATH的方法----通过开发者工具获取
    使用谷歌浏览器定位xpath是否准确
    [PHP] xpath提取网页数据内容
    PHP中preg_match正则匹配的/u /i /s是什么意思
    Flink connect 算子实践
    DataStreamUtils 连续keyBy 优化
    Heartbeat原理及部署
  • 原文地址:https://www.cnblogs.com/Xieyingpeng/p/14594626.html
Copyright © 2020-2023  润新知