每日一题(小白)字符串娱乐篇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);
相关推荐
ihan是我4 分钟前
ubnuntu使用conda进行虚拟环境迁移,复制,克隆
开发语言·python·conda
眼镜哥(with glasses)1 小时前
Java程序题案例分析
java·开发语言
全栈凯哥2 小时前
备忘录模式(Memento Pattern)详解
java·设计模式·备忘录模式
纪元A梦5 小时前
华为OD机试真题——荒岛求生(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
java·c语言·javascript·c++·python·华为od·go
苹果酱05675 小时前
iview 表单验证问题 Select 已经选择 还是弹验证提示
java·vue.js·spring boot·mysql·课程设计
夏子曦6 小时前
C#——NET Core 中实现汉字转拼音
开发语言·c#
꧁坚持很酷꧂6 小时前
Qt天气预报系统绘制温度曲线
开发语言·qt
Kidddddult6 小时前
力扣刷题Day 37:LRU 缓存(146)
算法·leetcode·力扣
电商数据girl6 小时前
【Python爬虫电商数据采集+数据分析】采集电商平台数据信息,并做可视化演示
java·开发语言·数据库·爬虫·python·数据分析