每日一题(小白)字符串娱乐篇16

分析题意可以了解到本题要求在一串字符串中找到所有组合起来排序递增的字符串。我们可以默认所有字符在字符串中的上升序列是1,从第一个字符开始找,如果后面的字符大于前面的字符就说明这是一个上序列那么后面字符所在的数组加一,如果连接不上前面的(两个字符一模一样的)就置为0.

①使用数组存储每一位元素的上升序列值

②后面元素要么与前者构成上升序列,要么则重置为0

③以此循环字符串中每一个元素将所有元素的上升序列相加即可得到最终值

④输出结果

复制代码
		String s="tocyjkdzcieoiodfpbgcncsrjbhmugdnojjddhllnofawllbhfiadgdcdjstemphmnjihecoapdjjrprrqnhgccevdarufmliqijgihhfgdcmxvicfauachlifhafpdccfseflcdgjncadfclvfmadvrnaaahahndsikzssoywakgnfjjaihtniptwoulxbaeqkqhfwl";
		int[] num=new int[s.length()];//每一个元素的上升子序列个数数组
		char[] c = s.toCharArray();//转为字符数组
		for (int i = 0; i < num.length; i++) {
			num[i]=1;//初值都为1
		}
		for (int i = 0; i < s.length(); i++) {//后面的元素下标
			for (int j = 0; j < i; j++) {//前面的元素下标
				if (c[i]>c[j]) {//上升序列
					num[i]+=num[j];
				}
				if (c[i]==c[j]) {//重置
					num[j]=0;
				}
			}
		}
		long sum=0;
		for (int i = 0; i < num.length; i++) {
				sum+=num[i];
		}
		System.out.println(sum);
相关推荐
likerhood7 小时前
单例模式详细讲解(java)
java·开发语言·单例模式
以琦琦为中心7 小时前
Spring `@Lazy` 注解技术文档
java
alphaTao7 小时前
LeetCode 每日一题 2026/4/27-2026/5/3
算法·leetcode
阿波罗尼亚7 小时前
桌面应用开发技术:NetBeans RCP / Eclipse RCP / JavaFX / Electron / Qt / Flutter Deskto
java·eclipse·electron
echola_mendes7 小时前
InfluxDB(四)——动态 Field/Tag 实现多类型设备统一接入的完整实践指南
java·后端·struts
SuperherRo7 小时前
服务攻防-Java组件安全&Solr搜索&Shiro鉴权&Log4j日志&JDK高版本绕过&CVE历史漏洞
java·log4j·solr·shiro·cve
tjl521314_217 小时前
03C++ 定位 new 运算符(Placement new)
开发语言·c++
Cyan_RA97 小时前
SpringMVC REST 详解
java·spring·mvc·springmvc·restful·jquery·jsp
skilllite作者7 小时前
Warp 新手极速上手与部署指南
java·前端·笔记·安全·agentskills
Evand J7 小时前
【MATLAB代码介绍】基于RSSI的蓝牙定位程序,N个锚点、二维平面
开发语言·matlab·蓝牙·定位·rssi