输入一行字符串,代表str。
输出一行字符串,代表统计字符串。
offerofferzainaliiiiii
o_1_f_2_e_1_r_1_o_1_f_2_e_1_r_1_z_1_a_1_i_1_n_1_a_1_l_1_i_6
hhhaaa
h_3_a_3
时间复杂度,空间复杂度
。
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static String getCountString(String str) {
if (str == null || str.equals("")) {
return null;
}
// 初始时字符串res只包含str的第0个字符,同时num = 1
StringBuilder res = new StringBuilder();
res.append(str.charAt(0));
int num = 1;
for (int i = 1; i < str.length(); i++) {
// 当前重复的字符已经结束
if (str.charAt(i) != str.charAt(i - 1)) {
res.append('_').append(num).append('_').append(str.charAt(i));
num = 1;
} else {
num++;
}
}
// 当遍历结束时,最后一种字符的次数还没有放入res,需要加上,
return res.append('_').append(num).toString();
}
// private static String concat(String s1, String s2, String s3) {
// // res(s1) + "_num(s2)" + "动态判断是否需要_的s3(下一个字符)"
// return s1 + "_" + s2 + (s3.equals("") ? s3 : "_" + s3);
// }
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line= null;
while ((line = bf.readLine())!=null){
System.out.println(getCountString(line));
}
}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
char[] str = br.readLine().trim().toCharArray();
StringBuilder sb = new StringBuilder();
char target = str[0];
int count = 1;
for(int i = 1; i < str.length; i++){
if(str[i] == target)
count ++; // 和前面的字符相同,计数+1
else{
// 字符出现变化,更新目标字符和计数
sb.append(target).append('_').append(count).append('_');
target = str[i];
count = 1;
}
}
sb.append(target).append('_').append(count);
System.out.println(sb);
}
} #include <bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
char c = s[0];
int cnt = 1;
bool first = true;
for(int i=1;i<s.length();i++){
if(s[i]==c)
cnt++;
else{
if(first){
printf("%c_%d", c, cnt);
first = false;
}else
printf("_%c_%d", c, cnt);
c = s[i];
cnt = 1;
}
}
if(first)
printf("%c_%d", c, cnt);
else
printf("_%c_%d\n", c, cnt);
return 0;
}
import java.util.Scanner;
public class Main {
/**
* 字符串的统计字符串
* @param args args
*/
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String line = scanner.next();
StringBuilder sb = new StringBuilder();
while (!"".equals(line)) {
char[] arr = line.toCharArray();
char temp = 0;
int count = 1;
int index = 0;
for (int i = 0; i <arr.length; i++) {
if (i == 0) {
temp = arr[0];
} else {
if (temp == arr[i]) {
count ++;
} else {
index = i;
sb.append(temp).append("_").append(count).append("_");
break;
}
}
if (i == arr.length - 1) {
index = i + 1;
sb.append(temp).append("_").append(count).append("_");
break;
}
}
line = line.substring(index);
if ("".equals(line)) {
break;
}
}
String str = sb.toString();
if (str.endsWith("_")) {
str = str.substring(0, str.length() - 1);
}
System.out.println(str);
}
}
#读入字符串 input_s=input() #结果字符串 ans='' #当前所在的字符 now_index=input_s[0] #当前所在字符的数量 Count=1 #遍历字符串 for i in input_s[1:]: #如果字符相等 #数量+1 if i==now_index: Count+=1 #不相等的话 #输出 #统计下一个字符 else: ans+=now_index+'_'+str(Count)+'_' now_index=i Count=1 #最后一个字符的信息 ans+=now_index+'_'+str(Count) print(ans)
while True:
try:
strs= input()
lis=[]
coun=1
for i in range(len(strs)-1):
if strs[i]==strs[i+1]:
coun+=1
else:
lis.append(strs[i]+'_'+str(coun))
coun=1
lis.append(strs[-1]+'_'+str(coun)) #最后一位因为循环长度问题,最后添加
print('_'.join(lis))
except:
break #include<iostream>
using namespace std;
int main() {
string s;cin>>s;
int n = s.size();
int count = 1;
for(int i=1;i<n;++i) {
if(s[i] == s[i-1]) count++;
else {
cout << s[i-1] <<"_" << count<<'_';
count = 1;
}
}
cout << s[n-1] <<"_" << count << endl;
return 0;
} #include<bits/stdc++.h>
using namespace std;
int main(){
string s;
cin>>s;
char pre=s[0];
int count=0;
int flag=0;
for(int i=0;i<s.size();i++){
char now=s[i];
if(now==pre){
count++;
}else{
if(flag==0){
cout<<pre<<"_"<<count<<"_";
flag=1;
}else{
cout<<pre<<"_"<<count<<"_";
}
pre=now;
count=1;
}
if(i==s.size()-1){
cout<<pre<<"_"<<count<<endl;
}
}
} //幼儿园级别的代码水平package character_string; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; //字符串的统计字符串 public class statistics_string { public static String getCountString(String str) { // 判断字符串是否为空 if (str == null || str.equals("")) { return ""; } // 将字符串转换为数组 char[] c = str.toCharArray(); // 获取数组的第一个字符串 StringBuffer res = new StringBuffer(); res.append(c[0]); int num = 1; for (int i = 1; i < c.length; i++) { // 判断是否为连续的出现的字符 if (c[i] != c[i - 1]) { res = res.append("_" + num + "_" + String.valueOf(c[i])); num = 1; } else { num++; } } return res.append("_" + String.valueOf(num)).toString(); } public static void main(String[] args) throws IOException { BufferedReader in = new BufferedReader(new InputStreamReader(System.in)); String str = in.readLine(); System.out.println(getCountString(str)); } }