网易2018校招内推编程题 交错01串

简介: 如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。 小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。
问题:
如果一个01串任意两个相邻位置的字符都是不一样的,我们就叫这个01串为交错01串。例如: "1","10101","0101010"都是交错01串。
小易现在有一个01串s,小易想找出一个最长的连续子串,并且这个子串是一个交错01串。小易需要你帮帮忙求出最长的这样的子串的长度是多少。 
输入描述:
输入包括字符串s,s的长度length(1 ≤ length ≤ 50),字符串中只包含'0'和'1'


输出描述:
输出一个整数,表示最长的满足要求的子串长度。

输入例子1:
111101111

输出例子1:
3

 * 思路:
 * 示例:100111000101010110
 * 根据题目可知,交错01串要求相邻字符不相同。所以凡是相邻字符相同的地方,一定是两个子串的分割点。如011 因为11相邻相同,则视为要分割部分,将字符串分为01和1;
 * 如示例01串,则可划分为10、01、1、10、0、01010101、10(将示例字符串相邻又相同字符中间加个顿号,就能得到这些子串)
 * 所以,我们只需要找到每个与前面字符相同的字符的位置,并记录下来。这些位置都是分割点,是新子串的开始位置。(最开始的字符前面没有字符,但因为也是子串开始点,即分割点,也需要记录下来。)
 * 如示例 可以得到分割点数组 0、2、4、5、7、8、16、18(最后一个字符是最后一个子串的结尾,相当于是分割点前面的字符,需要将他下一个位置也设成分割点。)
 * 分割点之间的差即是每个子串的长度。2、2、1、2、1、8、2
 * 取最大值即可。

b9bd28a3c6caeebdb90c9933629438ba47e712eb

java程序:

public class Staggered01String {

	public static void main(String[] args) {
//		读取输入01串
		Scanner scanner = new Scanner(System.in);
		String str= scanner.nextLine();
		
//		将01串化成char数组
		char[] c = str.toCharArray();
		
//		如果01串长度为1,直接输出1并结束即可。
		if(c.length==1){
			System.out.println(1);
			return;
		}			
		
//		list用来装分割点之差,即每个子串的长度。
		List<Integer> list = new ArrayList<Integer>();
		
//		local代表当前分割点的位置。一开始是0;
		int local=0;
		
//		让i从1开始,去c[i]和前面的字符比较(c[i-1]),如相同,则说明当前i是分割点,将当前i与local做差,即是i分割点前面子串的长度。
//		再将i赋给local 标记成新的分割点。如果i已经是最后一个,还需要将i+1设置成分割点,与当前local做差。
		for (int i = 1; i < c.length; i++) {
			if(c[i]==c[i-1]){
				list.add(i-local);
				local=i;
			}
			if (i==c.length-1)
				list.add(i+1-local);
		}
		
//		取最大值
		int max =list.get(0);
		for (int i = 1; i < list.size(); i++) {
			if(list.get(i)>max){
				max=list.get(i);
			}
		}
		
		System.out.println(max);
	}

}



相关文章
|
Java
第五期:字符串的一些有意思的操作
第五期:字符串的一些有意思的操作
90 0
|
机器学习/深度学习 人工智能 自然语言处理
当被大模型输入技术内功,数字人「文画两开花」,还在手机里随时陪你聊天(2)
当被大模型输入技术内功,数字人「文画两开花」,还在手机里随时陪你聊天
220 0
|
机器学习/深度学习 人工智能 自然语言处理
当被大模型输入技术内功,数字人「文画两开花」,还在手机里随时陪你聊天
当被大模型输入技术内功,数字人「文画两开花」,还在手机里随时陪你聊天
264 0
|
缓存 移动开发 JavaScript
5.17-5.25 大厂一轮面试题目全记录(腾讯PCG、WXG、虾皮、字节)
本瓜前段时间(2020.05.17 ~ 2020.05.25)可能由于机缘巧合?获得了几家大厂的面试资格。遂去试了试水(不该裸面呀),发现自己还是火候不够。
|
存储 机器学习/深度学习 算法
大逆不道,从天界偷下来的算法修仙秘籍竟然传到你手上~~(结尾有彩蛋)
这有可能是你见过最离谱的标题 这有可能是你没见过的技术文章模式 我不知道我的选择是否正确,但是我的想法就是: 不再让技术冷冰冰,让所有人学习中获得快乐!
268 1
|
算法 测试技术
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
149 0
算法 | 高楼丢鸡蛋(源自谷歌面试题)| 刷题打卡
|
存储 数据采集 SQL
肝三万字《数据仓库体系》轻松拿下字节offer(上)
肝三万字《数据仓库体系》轻松拿下字节offer(上)
肝三万字《数据仓库体系》轻松拿下字节offer(上)
|
机器学习/深度学习 缓存 架构师
十年技术进阶路,让我明白了三件要事(8000字长文)
8000字长文,大概花费您10分钟的阅读时间,我将以十年成长道路与八年写博经历分享与你,希望能给予各位读者或多或少的建议与提醒
279 1
十年技术进阶路,让我明白了三件要事(8000字长文)
|
机器学习/深度学习 存储 Windows
爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏 下
爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏
73 0
爆肝两万字,我爷爷都看的懂的《栈和队列》,建议各位观众姥爷先收藏 下