原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2025
在写这道题时用c语言的话思路是很快就出来的,就是通过循环确定输入的字符串中最大的数字是哪个,并做好标记,再通过循环输出字符串的同时,通过刚刚的标记,可使遇到最大的字符时,在其后面输出(max),用C语言是比较简便的。代码如下
#include
#include
int main(){
char a[100];
while(scanf("%s",a)!=EOF){
int i=1;
char max='A';//令A为最大
for(i=1;i<=strlen(a);i++){
if(a[i-1]>=max)
{
max=a[i-1];
}
}//通过循环走遍字符串将max标记为最大的字母
for(i=1;i<=strlen(a);i++){
putchar(a[i-1]);
if(a[i-1]==max) printf("(max)");
}
printf("\n");
}
}
由于最近也在学习Java,因此也想着怎么尝试使用Java完成这道题,大致的思路还是和C语言差不多,但是想着要把字符串放入数组,更容易实现算法。但由于自己对Java不熟悉,尝试了很多遍,都没成功,于是就查看已经AC的Java代码,发现了他们大都会用到tochararray以及StringBuilder,自己也不太懂,就去查询。
tochararray是将字符串转化为数组的方法,使用tochararray就不会那么麻烦将输入的字符串存入数组了。
而StringBuilder这个类,可用于处理字符串,而且也可以指定字符串的最大长度,给字符串分配更多的空间;也可以对字符串进行连接,该题中使用StringBuilder的作用便是这个。对于这个类更多的使用方法在这里java中stringBuilder的用法 - My Heart Will Go On - CSDN博客,目前水平有限,还在消化当中。
最后还是参照着已经AC的答案艰难的摸索出了Java的解题方式,
这个是参考的代码: http://acm.hdu.edu.cn/discuss/problem/post/reply.php?postid=36851&messageid=1&deep=0
苦恼脑子还是不够用啊