给定一个字符串s,请计算输出含有连续两个s作为子串的最短字符串。
2017-09-09 11:33
435 查看
import java.util.Scanner;
public class OverlapStr {
public static void main(String [] args){
Scanner sc =new Scanner(System.in);
String str = sc.nextLine();
char [] array = str.toCharArray();
StringBuffer result = new StringBuffer(str);
int start1 =0;
int start2 =0;
boolean flag = false;
labelA:
for(int i=0; i<array.length;i++){
if((i==array.length-1)&&(flag==false)){
result.append(str);
break labelA;
}
labelB:
for (int j=i+1;j<array.length; j++){
if(array[i]==array[j]){
start1 = i;
start2 = j;
while((j<array.length)&&(array[i]==array[j]) ){
i++;
j++;
}
if(j==array.length){
StringBuffer temp = new StringBuffer();
for (int k=i;k<array.length;k++){
temp.append(array[k]);
}
result.append(new String(temp));
flag = true;
break labelA;
}else{
i= start1;
j= start2;
}
}
}
}
System.out.println(result);
}
}
public class OverlapStr {
public static void main(String [] args){
Scanner sc =new Scanner(System.in);
String str = sc.nextLine();
char [] array = str.toCharArray();
StringBuffer result = new StringBuffer(str);
int start1 =0;
int start2 =0;
boolean flag = false;
labelA:
for(int i=0; i<array.length;i++){
if((i==array.length-1)&&(flag==false)){
result.append(str);
break labelA;
}
labelB:
for (int j=i+1;j<array.length; j++){
if(array[i]==array[j]){
start1 = i;
start2 = j;
while((j<array.length)&&(array[i]==array[j]) ){
i++;
j++;
}
if(j==array.length){
StringBuffer temp = new StringBuffer();
for (int k=i;k<array.length;k++){
temp.append(array[k]);
}
result.append(new String(temp));
flag = true;
break labelA;
}else{
i= start1;
j= start2;
}
}
}
}
System.out.println(result);
}
}
相关文章推荐
- 华为计算字符个数写出一个程序,接受一个有字母和数字以及空格组成的字符串,和一个字符,然后输出输入字符串中含有该字符的个数。不区分大小写。
- 输出一个字符串中含有所规定的字符子串的数量
- 2014阿里巴巴 实习生电面题目:输出给定字符串的全部连续子串
- 字符串匹配问题:输入一个字符串,计算其中包含的‘连续’给定的子字符串最长的个数.
- 递归问题之一:给定一字符串,输出字符串中所有字符子串的各种组合形式,长度为一个字符到字符串的长度,忽略排序
- 将输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,z->a;若输入的字符串连续出现两个字母相同时,后一个字母需要连续转换2次。例如:
- 【算法拾遗】阿里实习生电面题目:输出给定字符串的全部连续子串
- 阿里实习生电面题目:输出给定字符串的全部连续子串
- 习题 8.16 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- HDU 1503 Advanced Fruits 由两个字符串组成一个最短新串 (最长公共子串变形)
- 阿里实习生电面题目:输出给定字符串的全部连续子串
- 给一个字符串s,计算具有相同数字0和1的非空(连续)子字符串的数量,并且这些子字符串中的全部0和全部1被连续分组。子串发生多次被计数的次数。
- 给定一个字符串,切分该字符串,使得到的子串都是回文字符串,计算最少的切分次数。
- 阿里电面题:输出给定字符串的全部连续子串
- 一个字符串A的子串被定义成从A中顺次选出若干个字符构成的串。如A=“cdaad" ,顺次选1,3,5个字符就构成子串" cad" ,现给定两个字符串,求它们的最长共公子串。 Input 第一行两个字
- 找出一个字符串中最长的连续数字子串,输出该字符串及长度
- 给定一个字符串S,求所有长度小于等于3的子串出现的次数,输出结果按出现次数从大到小
- 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如str为abca时,输出则为abcabca
- 输入一个字符串,内有数字和非数字字符,将其中连续的数字作为一个整数,依次存放到一数组a中。统计共有多少个整数,并输出这些数。
- 问题:求两个字符串的最长公共子串。 要求:输入两个字符串,输出它们的最长公共子串,包括长度。 设计: 设计一个类 String,包括一个 len(字符串长度)和字符串指针 s。另有如下成员函数: ·