2021秋招部分笔试题汇总 第三题

题目:字符串算术运算

描述:定一个字符串式子,返回它的计算结果。算术规则为: k*[encoded_string],表示其中方括号内部的 encoded_string 正好重复 k 次。注意 k 保证为正整数。e.g. s = "3*[a2*[c]]", 返回 “accaccacc”


输入例子1:
"3*[a2*[c]]"

输出例子1:
"accaccacc"

代码:

复制代码
 1 import java.util.*;
 2 import java.io.BufferedReader;
 3 import java.io.IOException;
 4 import java.io.InputStreamReader;
 5 
 6 public class Main {
 7     static StringBuilder sb;
 8 
 9     public String computeString (String str) {
10         // write code here
11         //2*[b]最少5个字符
12         if (str.length() <= 4) {
13             return str;
14         }
15 
16         sb = new StringBuilder(str);
17 
18         int right = 0;
19         int left = 0;
20         while ((right = sb.indexOf("]")) > 0) {
21             left = sb.substring(0, right).lastIndexOf('[');
22             int t=0;   //记录*前面有几个数字
23             int i = left-2;    
24             while(i>=0){
25                 if(sb.charAt(i)>='0'&&sb.charAt(i)<='9'){
26                     t++;
27                     i--;
28                 }else{
29                     break;
30                 }
31             }
32             //处理一个需要转换的字符串
33             String res = solution(sb.substring(left - 1-t, right));  //不传入]这两个符号
34 
35             sb.replace(left - 1-t, right + 1, res);
36         }
37         return sb.toString();
38     }
39 
40     //@parame s为"3*[adnf"类型 ,处理方法
41     public static String solution(String s) {
42         int left=s.indexOf('[');
43         String str=s.substring(left+1,s.length());
44         int n=Integer.parseInt(s.substring(0,left-1));
45         StringBuilder stringBuilder=new StringBuilder();
46         while(n-->0){
47             stringBuilder.append(str);
48         }
49         return stringBuilder.toString();
50     }
51     public static void main(String[] args) throws IOException {
52         BufferedReader bufferedReader=new BufferedReader(new InputStreamReader(System.in));
53         String str=bufferedReader.readLine();
54         Main main=new Main();
55         System.out.println(main.computeString(str));
56     }
57 }
复制代码

 

posted @   堤苏白  阅读(158)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示