最高效的求字符串中空格的个数,在线等待!

montao 2008-04-23 06:49:21
例如字符串:

String str = " dsadasd gff bgfbf da d asd "; //这样一个字符串,前面包含的空格个数不算,中间和最后的空格要算,求总个数
//这个题目后面包含了3个空格 所以应该是8个空格


希望能有最高效的方法!
...全文
223 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
little06 2008-04-23
  • 打赏
  • 举报
回复
http://hi.baidu.com/jingleq/blog/item/7bc39b62b61839dce7113a54.html
看看 正则的效率其实并不高
其实2楼的方法就可以了
KAKUKYOWU 2008-04-23
  • 打赏
  • 举报
回复
o(∩_∩)o...哈哈我怎么没想到呢,是个好办法。不过还是得先抛出前面多余的空格,这一步好像省不了啊。
montao 2008-04-23
  • 打赏
  • 举报
回复

对 呵呵 4楼的OK


谢谢拉!!!
li_d_s 2008-04-23
  • 打赏
  • 举报
回复
用正则把空格替换掉,然后算长度差
KAKUKYOWU 2008-04-23
  • 打赏
  • 举报
回复
一步到位的正则不会,谁有我也想学。。。
-------------------------------------------------------------------------------------------------------------
/**
*
*/
package test;

/**
*
* @author JHF Team <jhf@bestwiz.cn>
*
*
* @copyright 2006-2007, BestWiz(Dalian) Co.,Ltd
*/
public class NullCount {

/**
* 判断字符中含有空格的个数(前面的空格不算)
*
* @return int
* @param nu
*
* @author guoqiang <guoqiang@bestwiz.cn>
*/
public static int isNull(String nu) {

@SuppressWarnings("unused")
String str = "";
int count = 0;

for (int i = 0; i < nu.length(); i++) {
if (!String.valueOf(nu.charAt(i)).matches("\\s")) {
str = nu.substring(i, nu.length());
break;
}
}

for (int j = 0; j < str.length(); j++) {
if (String.valueOf(str.charAt(j)).matches("\\s")) {
count++;
}
}

return count;
}

/**
* main主函数
*
* @return
* @param args
*
* @author guoqiang <guoqiang@bestwiz.cn>
*/
public static void main(String[] args) {

// 判断字符中含有空格的个数(前面的空格不算)
System.out.println();
System.out.println("判断字符中含有空格的个数(前面的空格不算)");
int nu1 = isNull(" a b c d ");
System.out.println("nu1: " + nu1);
int nu2 = isNull(" abcdefg");
System.out.println("nu2: " + nu2);
}
}
--------------------------------------------------------------------------------------------------------------
montao 2008-04-23
  • 打赏
  • 举报
回复

哎... 这样肯定不行的 我也是用的for+if

老大说这样效率不好阿 。。。

您看看能改成正则嘛?
Shine_Panda 2008-04-23
  • 打赏
  • 举报
回复
算法道是写了一个.高不高效就不晓得了.

public class Test{
public static void main(String[] args){
String str = " dsadasd gff bgfbf da d asd ";



int count = 0;
int flag = 0;
for (int i = 0; i<str.length(); i++){
char c = str.charAt(i);
System.out.println (c);

if(c!=' ' && flag ==0){
flag = 1;
}else if(c==' ' && flag !=0){
count++;
}

}


System.out.println (count);


}
}

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧