题目
题目链接:
https://www.nowcoder.com/practice/c43a0d72d29941c1b65c857d8ac9047e
思路
直接模拟
参考答案Java
import java.util.*;public class Solution {/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param param string字符串* @return string字符串*/public String compressString (String param) {//直接模拟StringBuilder sb = new StringBuilder();int n = param.length();for (int i = 0; i < n ; i++) {char c = param.charAt(i);int cnt = 0;int j = i;for (; j < n ; j++) {if (param.charAt(j) == c) {cnt++;} else {break;}}if (cnt > 1) {sb = sb.append(c + "" + cnt);} else {sb = sb.append(c + "");}i = j - 1;}return sb.toString();}
}
参考答案Go
package main
import ("strings""strconv"
)
/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param param string字符串* @return string字符串*/
func compressString(param string) string {// 直接模拟n := len(param)var ans strings.Builderfor i := 0; i < n; i++ {c := param[i]j := icnt := 0for ; j < n; j++ {if c == param[j] {cnt++} else {break}}ans.WriteString(string([]byte{c}))if cnt > 1 {ans.WriteString(strconv.Itoa(cnt))//ans = ans + string([]byte{c}) + strconv.Itoa(cnt)}i = j - 1}return ans.String()
}
参考答案PHP
<?php/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可** * @param param string字符串 * @return string字符串*/
function compressString( $param )
{//直接模拟$n = strlen($param);$ans = "";for($i=0;$i<$n;$i++){$c = $param[$i];$j = $i;$cnt = 0;for(;$j<$n;$j++){if($param[$j] ==$c){$cnt++;}else{break;}}if($cnt>1){$ans = $ans.$c.$cnt;}else{$ans =$ans.$c;}$i=$j-1;}return $ans;
}