java 中的重复字符计数而不使用 hashmap
duplicate characters count in java without using hashmap
请帮我在java中使用字符串(或StringBuffer)编写代码。
请不要使用除 String 或 StringBuffer 之外的任何其他数据结构。
我得到了答案,但代码从开始再次计算字符数,直到它有 0 个字符。
o/p最后给出了,请查收。
提前致谢。
import java.util.*;
public class DuplicateWordsOcc {
static Scanner sc = new Scanner(System.in);
int i,j,k;
void show(String s,char ch,int n){
for(i=0;i<s.indexOf(ch);i++){
if(s.charAt(i)!=ch){
System.out.println(ch+" : "+n);
}
}
}
public static void main(String args[]){
DuplicateWordsOcc ob1 =new DuplicateWordsOcc();
System.out.println("Enter the string: ");
String s1 = sc.nextLine();
String s2 = new String(s1);
int i,j,k;
for(i=0;i<s1.length();i++){
int count=1;
for(j=i+1;j<s1.length();j++){
if(s1.charAt(i)==s1.charAt(j)){
count++;
ob1.show(s1,s1.charAt(i),count);
}
}
}
}
}
输出
输入字符串:
你好
l : 2
这是另一个输出
输出
输入字符串:
你好你好你好
l : 2
l : 3
l : 4
l : 5
l : 6
l : 7
l : 8
l : 2
l : 3
l : 4
l : 5
l : 6
l : 7
o : 2
o : 2
o : 2
o : 3
o : 3
o : 3
o : 4
o : 4
o : 4
: 2
: 2
: 2
: 2
: 3
: 3
: 3
: 3
l : 2
l : 3
l : 4
l : 5
l : 6
l : 2
l : 3
l : 4
l : 5
o : 2
o : 2
o : 2
o : 3
o : 3
o : 3
: 2
: 2
: 2
: 2
l : 2
l : 3
l : 4
l : 2
l : 3
o : 2
o : 2
o : 2
l : 2
在第二个输出中请注意粗体字母,这是第一个显示的真正答案 iteration.I 想要在得到它后停止执行。
从第一个输出我得出结论,超过计数 2 开始出现问题。
我知道问题出在 show() 方法中的 for 循环,请更正我的代码。
请原谅我的英语。
修改后的代码如下:
import java.util.*;
public class DuplicateWordsOcc {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args){
System.out.println("Enter the string: ");
String s1 = sc.nextLine();
s1 = s1.replaceAll("\s","").toUpperCase();
int len = s1.length();
while(len > 0) {
int count = 1;
for(int j=1;j<len;j++){
if(s1.charAt(0)==s1.charAt(j)){
count++;
}
}
if (count > 1) {
System.out.println(s1.charAt(0)+" : "+count);
}
String character = String.valueOf(s1.charAt(0)).trim();
s1 = s1.replaceAll(character,"");
len -= count;
}
}
}
"He is a very good athlete and he can swim." 的输出是
H : 3
E : 5
I : 2
S : 2
A : 4
O : 2
D : 2
T : 2
N : 2
请帮我在java中使用字符串(或StringBuffer)编写代码。 请不要使用除 String 或 StringBuffer 之外的任何其他数据结构。 我得到了答案,但代码从开始再次计算字符数,直到它有 0 个字符。 o/p最后给出了,请查收。 提前致谢。
import java.util.*;
public class DuplicateWordsOcc {
static Scanner sc = new Scanner(System.in);
int i,j,k;
void show(String s,char ch,int n){
for(i=0;i<s.indexOf(ch);i++){
if(s.charAt(i)!=ch){
System.out.println(ch+" : "+n);
}
}
}
public static void main(String args[]){
DuplicateWordsOcc ob1 =new DuplicateWordsOcc();
System.out.println("Enter the string: ");
String s1 = sc.nextLine();
String s2 = new String(s1);
int i,j,k;
for(i=0;i<s1.length();i++){
int count=1;
for(j=i+1;j<s1.length();j++){
if(s1.charAt(i)==s1.charAt(j)){
count++;
ob1.show(s1,s1.charAt(i),count);
}
}
}
}
}
输出
输入字符串:
你好
l : 2
这是另一个输出
输出
输入字符串:
你好你好你好
l : 2
l : 3
l : 4
l : 5
l : 6
l : 7
l : 8
l : 2
l : 3
l : 4
l : 5
l : 6
l : 7
o : 2
o : 2
o : 2
o : 3
o : 3
o : 3
o : 4
o : 4
o : 4
: 2
: 2
: 2
: 2
: 3
: 3
: 3
: 3
l : 2
l : 3
l : 4
l : 5
l : 6
l : 2
l : 3
l : 4
l : 5
o : 2
o : 2
o : 2
o : 3
o : 3
o : 3
: 2
: 2
: 2
: 2
l : 2
l : 3
l : 4
l : 2
l : 3
o : 2
o : 2
o : 2
l : 2
在第二个输出中请注意粗体字母,这是第一个显示的真正答案 iteration.I 想要在得到它后停止执行。
从第一个输出我得出结论,超过计数 2 开始出现问题。
我知道问题出在 show() 方法中的 for 循环,请更正我的代码。
请原谅我的英语。
修改后的代码如下:
import java.util.*;
public class DuplicateWordsOcc {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args){
System.out.println("Enter the string: ");
String s1 = sc.nextLine();
s1 = s1.replaceAll("\s","").toUpperCase();
int len = s1.length();
while(len > 0) {
int count = 1;
for(int j=1;j<len;j++){
if(s1.charAt(0)==s1.charAt(j)){
count++;
}
}
if (count > 1) {
System.out.println(s1.charAt(0)+" : "+count);
}
String character = String.valueOf(s1.charAt(0)).trim();
s1 = s1.replaceAll(character,"");
len -= count;
}
}
}
"He is a very good athlete and he can swim." 的输出是
H : 3
E : 5
I : 2
S : 2
A : 4
O : 2
D : 2
T : 2
N : 2