牛客NC101 压缩字符串(一)【简单 模拟 Java,Go,PHP】
题目
题目链接:
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.Builder
for i := 0; i < n; i++ {
c := param[i]
j := i
cnt := 0
for ; 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;
}
原文地址:https://blog.csdn.net/weixin_37991016/article/details/136963973
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!