文思智力面试题

wxzyydy 2009-09-04 07:00:21
给定"aaabbeddddaaf"字符串,输出a3b2ed4a2f的方法。写一个方法(代码实现)。谢谢。
...全文
556 33 打赏 收藏 转发到动态 举报
写回复
用AI写文章
33 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuiallena 2010-09-10
  • 打赏
  • 举报
回复
我学测试的,应该不会遇到这类的面试题吧
zzyyll2 2010-03-19
  • 打赏
  • 举报
回复
System.Text.StringBuilder sb = new StringBuilder();
string str = "aaabbeddddaaf";
string regex = "(.)\\1*";
MatchCollection matchs = System.Text.RegularExpressions.Regex.Matches(str, regex, RegexOptions.Compiled | RegexOptions.IgnoreCase);
if (matchs.Count > 0)
{
foreach (Match match in matchs)
{
sb.Append(match.Value.Substring(0, 1));
sb.Append(match.Length > 1 ? match.Length.ToString() : "");
}
}
haojian11 2009-09-08
  • 打赏
  • 举报
回复
不算智力题。
laynepeng 2009-09-06
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 wxzyydy 的回复:]
20楼好强,用正则表达式过来简单,而且经过测试,代码是没有问题的
[/Quote]

正则可以解决很多问题,但是真要说算法,例如ACM这些比赛的话,时间和空间复杂度是要关心的。程序长短反而不是很重要。
ruisheng_412 2009-09-06
  • 打赏
  • 举报
回复
import java.util.regex.*;

public class StSum{
public static void main(String args[]) {
String str="aaabbeddddaaf";
String regex="(.)\\1*";
Matcher m=Pattern.compile(regex).matcher(str);
StringBuilder sb=new StringBuilder();
while(m.find()){
sb.append(m.group(1));
if(m.group().length()>1){
sb.append(m.group().length());
}
}
System.out.println(sb);
}
}
threeYUAN 2009-09-05
  • 打赏
  • 举报
回复
学习了
lyd319 2009-09-05
  • 打赏
  • 举报
回复
还是创新的好。
Pbulic 2009-09-05
  • 打赏
  • 举报
回复
import java.util.regex.*;

public class StSum{
public static void main(String args[]) {
String str="aaabbeddddaaf";
String regex="(.)\\1*";
Matcher m=Pattern.compile(regex).matcher(str);
StringBuilder sb=new StringBuilder();
while(m.find()){
sb.append(m.group(1));
if(m.group().length()>1){
sb.append(m.group().length());
}
}
System.out.println(sb);
}
}
jayqean 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 gesanri 的回复:]
我也写一个
Java codepublicclass TestCounting {publicstaticvoid main(String args[]){
String s="aaabbeddddaaf";int count=1;
StringBuffer sb=new StringBuffer("");for(int i=0; i< s.length(); i++){for(int j= i+1; j< s.length(); j++){if(s.charAt(i)== s.charAt(j)){
count++;
i++;
}elsebreak;
}
sb.append(s.charAt(i)).append(count==1?"":String.valueOf(count));
count=1;
}
System.out.println(sb.toString());
}
}
[/Quote]
good!
blliy117 2009-09-05
  • 打赏
  • 举报
回复
这个题目还用问吗?
也没有什么方法,
除了 bigbug9002 的正则表达试熟以外,其实思路就是一个

遍历判断前一个和后一个是不是一样的,如果不一样就清0再判断累加!

这是没有想法的!
yang105 2009-09-05
  • 打赏
  • 举报
回复
顶, 这个用hashMap实现很方便的
walkerdh 2009-09-05
  • 打赏
  • 举报
回复

public class test{
public static void main(String ... args){
String s = "aaabbeddddaaf";
System.out.println(getS(s));
}
public static StringBuffer getS(String s){
StringBuffer temp = new StringBuffer();
int count = 0;
char t = s.charAt(0);
temp.append(t);
for(int i=0;i<s.length()-1;i++)
if(t==s.charAt(i+1))
{
count++;
}
else
{
temp.append(count+1);
count = 0;
t = s.charAt(i+1);
temp.append(s.charAt(i+1));
}
return temp;
}
}


自己写的好复杂……泪目了……

regexp才是王道啊
pz110484638 2009-09-05
  • 打赏
  • 举报
回复
学习...
gesanri 2009-09-05
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 wxzyydy 的回复:]
20楼好强,用正则表达式过来简单,而且经过测试,代码是没有问题的
[/Quote]
... 20楼就是抄的bigbug的(12楼),他就是改了类名
wxzyydy 2009-09-05
  • 打赏
  • 举报
回复
20楼好强,用正则表达式过来简单,而且经过测试,代码是没有问题的
yuys168 2009-09-05
  • 打赏
  • 举报
回复
顶下
liguangwen86 2009-09-05
  • 打赏
  • 举报
回复
一楼和楼主是一个人吗?
liu4545533 2009-09-04
  • 打赏
  • 举报
回复
文思的笔试会有这样de题目 ?
laynepeng 2009-09-04
  • 打赏
  • 举报
回复
哈哈哈~发现我做错了,没看到如果是一个的话,不能把1打印出来:p~

还有没考虑个数超过10的情况,呃~~

想节约空间还是有点困难的~
gesanri 2009-09-04
  • 打赏
  • 举报
回复
我也写一个

public class TestCounting {
public static void main(String args[]){
String s = "aaabbeddddaaf";
int count = 1;
StringBuffer sb = new StringBuffer("");
for(int i = 0; i < s.length(); i++){
for(int j = i + 1; j < s.length(); j++){
if(s.charAt(i) == s.charAt(j)){
count++;
i++;
}
else
break;
}
sb.append(s.charAt(i)).append(count == 1 ? "":String.valueOf(count));
count = 1;
}
System.out.println(sb.toString());
}
}
加载更多回复(13)

67,512

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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