Java 一个字符串中的相同字符
我需要知道一个字符串中有多少相同类型的字符 我试过这个Java 一个字符串中的相同字符,java,string,types,char,Java,String,Types,Char,我需要知道一个字符串中有多少相同类型的字符 我试过这个 String x ="(3+3)*(4-2)"; int a = x.indexOf( "(" ); 但这只给了我第一个索引 或 使用 或 有几种方法可以考虑这样做,但最简单的方法之一是简单地循环字符串中的字符 String x ="(3+3)*(4-2)"; int count = 0; for (char c : x.toCharArray()) { if (c == '(') { count++; }
String x ="(3+3)*(4-2)";
int a = x.indexOf( "(" );
但这只给了我第一个索引
或
使用
或
有几种方法可以考虑这样做,但最简单的方法之一是简单地循环
字符串中的字符
String x ="(3+3)*(4-2)";
int count = 0;
for (char c : x.toCharArray()) {
if (c == '(') {
count++;
}
}
System.out.println(count);
仅仅因为它可以完成…你可以使用一点regexp…(我知道,太夸张了)
有几种方法可以考虑这样做,但最简单的方法之一是简单地循环
字符串中的字符
String x ="(3+3)*(4-2)";
int count = 0;
for (char c : x.toCharArray()) {
if (c == '(') {
count++;
}
}
System.out.println(count);
仅仅因为它可以完成…你可以使用一点regexp…(我知道,太夸张了)
您可以使用循环并使用另一种方法
indexOf(int,int)
:
您可以使用循环并使用另一种方法
indexOf(int,int)
:
似乎最好将其放在一个单独的函数中:
// accepts a string and a char to find the number of occurrences of
public static int get_count(String s, char c) {
int count = 0; // count initially 0
for (int i = 0; i < s.length(); i++) // loop through the whole string
if (s.charAt(i) == c)
count ++; // increment every time an occurrence happens
return count; // return the count in the end
}
似乎最好将其放在一个单独的函数中:
// accepts a string and a char to find the number of occurrences of
public static int get_count(String s, char c) {
int count = 0; // count initially 0
for (int i = 0; i < s.length(); i++) // loop through the whole string
if (s.charAt(i) == c)
count ++; // increment every time an occurrence happens
return count; // return the count in the end
}
下面的代码符合您的要求。如果性能非常关键,您可以使用此功能进行优化。如果您想要更优雅的解决方案,可以看看java的regex库
int occurences = 0;
String x ="(3+3)*(4-2)";
char tolookfor = '(';
for(int i = 0; i < x.length() ; i++)
{
if(x.charAt(i) == tolookfor)
occurences++;
}
int出现次数=0;
字符串x=“(3+3)*(4-2)”;
char-tolookfor='(';
对于(int i=0;i
下面的代码符合您的要求。如果性能至关重要,您可以对此进行优化。如果您想要更优雅的解决方案,您可以查看java的regex库
int occurences = 0;
String x ="(3+3)*(4-2)";
char tolookfor = '(';
for(int i = 0; i < x.length() ; i++)
{
if(x.charAt(i) == tolookfor)
occurences++;
}
int出现次数=0;
字符串x=“(3+3)*(4-2)”;
char-tolookfor='(';
对于(int i=0;i
您可以试试这个
String x ="(3+3)*(4-2)";
char[] arr=x.toCharArray();
Map<String,Integer> map=new HashMap<>();
for(int i=0;i<arr.length;i++){
Integer upTo=map.get(String.valueOf(arr[i]));
if (upTo==null) {
upTo=0;
}
map.put(String.valueOf(arr[i]),upTo+1) ;
}
for (Map.Entry<String,Integer> entry:map.entrySet()){
System.out.println("Number of "+entry.getKey()+" in this string is: "+entry.getValue());
}
你可以试试这个
String x ="(3+3)*(4-2)";
char[] arr=x.toCharArray();
Map<String,Integer> map=new HashMap<>();
for(int i=0;i<arr.length;i++){
Integer upTo=map.get(String.valueOf(arr[i]));
if (upTo==null) {
upTo=0;
}
map.put(String.valueOf(arr[i]),upTo+1) ;
}
for (Map.Entry<String,Integer> entry:map.entrySet()){
System.out.println("Number of "+entry.getKey()+" in this string is: "+entry.getValue());
}
如此简单的问题的答案竟如此复杂,令人难以置信
x.indexOf(“”;
但这只给了我第一个索引
使用x.indexOf(“(”,fromIndex);
查找更多匹配项
顺便说一下,如果您要查找单个字符,可以使用x.indexOf('(');
和x.indexOf('(',fromIndex);
来提高效率
因此,在不重新发明车轮的情况下,最有效的方法是:
int count=0;
for(int pos=s.indexOf('('); pos!=-1; pos=s.indexOf('(', pos+1)) count++;
如此简单的问题的答案竟如此复杂,令人难以置信
x.indexOf(“”;
但这只给了我第一个索引
使用x.indexOf(“(”,fromIndex);
查找更多匹配项
顺便说一下,如果您要查找单个字符,可以使用x.indexOf('(');
和x.indexOf('(',fromIndex);
来提高效率
因此,在不重新发明车轮的情况下,最有效的方法是:
int count=0;
for(int pos=s.indexOf('('); pos!=-1; pos=s.indexOf('(', pos+1)) count++;
这对你有帮助
public static int counter(String x, char y) {
char[] array=x.toCharArray();
int count=0;
for(int i=0;i<x.length();i++)
{
if(y==array[i]) count++;
}
return (count>0)? count:0;
}
公共静态整型计数器(字符串x,字符y){
char[]数组=x.toCharArray();
整数计数=0;
对于(int i=0;i0)?计数:0;
}
这将帮助您
public static int counter(String x, char y) {
char[] array=x.toCharArray();
int count=0;
for(int i=0;i<x.length();i++)
{
if(y==array[i]) count++;
}
return (count>0)? count:0;
}
公共静态整型计数器(字符串x,字符y){
char[]数组=x.toCharArray();
整数计数=0;
对于(int i=0;i0)?计数:0;
}
哦,我忽略了所有其他人之间的答案。很高兴看到有其他人知道存在该方法,并提供了一个没有开销的答案。哦,我忽略了所有其他人之间的答案。很高兴看到有其他人知道存在该方法,并提供了一个没有开销的答案。我不认为为这样一个琐碎的任务添加第三方库是一个很好的建议。但是当复制方法的代码时,不应该将第二个参数重命名为“regex”因为它不像正则表达式那样对待它。它调用的是只进行精确匹配的String.indexOf
。我认为仅仅为这样一个琐碎的任务添加第三方库不是一个好建议。但是在复制方法的代码时,不应该将第二个参数重命名为“regex”因为它不把它当作正则表达式,它调用的是只进行精确匹配的String.indexOf
。