HDOJ-2025

原题链接:http://acm.hdu.edu.cn/showproblem.php?pid=2025

HDOJ-2025_第1张图片
image

在写这道题时用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
苦恼脑子还是不够用啊

你可能感兴趣的:(HDOJ-2025)