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 }
· 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应用必不可少的技术