一道笔试题:给定编码规则,实现decode()方法
public class CodeDecode {
/*变换函数encode()顺序考察已知字符串的字符,按以下规则逐组生成新字符串:
(1)若已知字符串的当前字符不是大于0的数字字符,则复制该字符与新字符串中;
(2)若以已知字符串的当前字符是一个数字字符,且他之后没有后继字符,则简单地将它复制到新字符串中;
(3)若以已知字符串的当前字符是一个大于0的数字字符,并且还有后继字符,设该数字字符的面值为n,
则将它的后继字符(包括后继字符是一个数字字符) 重复复制n+1 次到新字符串中;
(4)以上述一次变换为一组,在不同组之间另插入一个下划线'_'用于分隔;
(5)若已知字符串中包含有下划线'_',则变换为用"/UL".*/
// by fengzh.
public String decode2(String oldStr) {
StringBuffer sb = new StringBuffer();
for(int i=0;i<oldStr.length();i++) {
char ch = oldStr.charAt(i);
if(Character.isDigit(ch)){
if(ch=='0'){
sb.append(ch);
} else {
if(i==oldStr.length()-1){
sb.append(ch);
} else {
int n = ch - '0';
char nextCh = oldStr.charAt(i+1);
for(int j=0;j<n+1;j++){
sb.append(nextCh);
}
}
}
if(i!=oldStr.length()-1){
sb.append('_');
}
} else if(ch=='_') {
sb.append("/UL");
} else {
if(i!=oldStr.length()-1){
sb.append(ch);
sb.append('_');
}
}
}
return sb.toString();
}
public String pub = "";
public void decode(String str) {
if (str.charAt(0) == '_') {
pub = pub + "//UL";
} else if ("123456789".indexOf(str.charAt(0)) == -1) {
pub = pub + str.charAt(0) + "_";
} else if (str.length() == 1) {
pub = pub + str;
return;
} else {
for (int i = 0; i < "123456789".indexOf(str.charAt(0)) + 2; i++)
pub = pub + str.charAt(1);
pub = pub + "_";
}
if (str.length() != 1)
this.decode(str.substring(1));
}
public static void main(String[] args) {
CodeDecode d = new CodeDecode();
String oldStr = "24ab_2t2";
// d.decode("24ab_2t2"); // 结果:444_aaaaa_a_b_//ULttt_t_2
d.pub = d.decode2(oldStr); // 结果:444_aaaaa_a_b_/ULttt_t_2
System.out.println(d.pub);
}
}
一道笔试题:给定编码规则,实现decode()方法的更多相关文章
- Java中有关构造函数的一道笔试题解析
Java中有关构造函数的一道笔试题解析 1.详细题目例如以下 下列说法正确的有() A. class中的constructor不可省略 B. constructor必须与class同名,但方法不能与c ...
- 一道笔试题来理顺Java中的值传递和引用传递
题目如下: private static void change(StringBuffer str11, StringBuffer str12) { str12 = str11; str11 = ...
- 谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数。
谷歌笔试题--给定一个集合A=[0,1,3,8](该集合中的元素都是在0,9之间的数字,但未必全部包含), 指定任意一个正整数K,请用A中的元素组成一个大于K的最小正整数. Google2009华南地 ...
- 一道笔试题和UML思想 ~
一句软件工程界的名言,让我想起了一个和一道笔试题有关的故事.希望更多的人了解 UML 背后的思想比他的语法更重要,是笔者写作本文的一点小愿望. 一.从一句软件工程名言说起 对很多事情的处理上,东西方都 ...
- 由阿里巴巴一道笔试题看Java静态代码块、静态函数、动态代码块、构造函数等的执行顺序
一.阿里巴巴笔试题: public class Test { public static int k = 0; public static Test t1 = new Test("t1&qu ...
- 转:一道笔试题-将int型数组强制转换为char*,再求strlen,涉及大小端
写出如下程序运行结果: #include<stdio.h> #include<string.h> int main() { int a[2000]; char *p = (ch ...
- golang 中 string 转换 []byte 的一道笔试题
背景 去面试的时候遇到一道和 string 相关的题目,记录一下用到的知识点.题目如下: s:="123" ps:=&s b:=[]byte(s) pb:=&b s ...
- TX2017秋招笔试题之编码
问题描述: 假定一种编码的编码范围是a ~ y的25个字母,从1位到4位的编码,如果我们把该编码按字典序排序,形成一个数组如下: a, aa, aaa, aaaa, aaab, aaac, - -, ...
- 通过一道笔试题浅谈javascript中的promise对象
因为前几天做了一个promise对象捕获错误的面试题目,所以这几天又重温了一下promise对象.现在借这道题来分享下一些很基础的知识点. 下面是一个面试题目,三个promise对象捕获错误的例子,返 ...
随机推荐
- FXML Stuffs (include and define)
FXML Stuffs (include and define)Hello folks,Today I would like to blog about the FXML define and inc ...
- hdu 4463 有一条边必须加上 (2012杭州区域赛K题)
耐克店 和 苹果店必须相连 Sample Input42 30 01 00 -1 1 -10 Sample Output3.41 # include <iostream> # includ ...
- SQL中IN和EXISTS用法的区别
结论 1. in()适合B表比A表数据小的情况 2. exists()适合B表比A表数据大的情况 当A表数据与B表数据一样大时,in与exists效率差不多,可任选一个使用. select * fro ...
- #3 Codeforces-865C Gotta Go Fast(期望dp)
题意:一个游戏一共有n个关卡,对于第i关,用a[i]时间通过的概率为p[i],用b[i]通过的时间为1-p[i],每通过一关后可以选择继续下一关或者时间清0并从第一关开始,先要求通过所有关卡的时间和不 ...
- Codeforces 490F Treeland Tour 树形dp
Treeland Tour 离散化之后, 每个节点维护上升链和下降链, 感觉复杂度有点高, 为啥跑这么快.. #include<bits/stdc++.h> #define LL long ...
- 【Java】 剑指offer(18) 删除链表中重复的结点
本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 在一个排序的链表中,如何删除重复的结点?例如,在图3.4(a)中重 ...
- BASH if/while/until loop
#/bin/bash ]; then counter=" counter1=" echo "for loop:" $); do echo $i done ); ...
- JSONObject基本内容(二)
参考内容:http://swiftlet.net/archives/category/json 十分感谢!!! 这部分的内容主要是讲述 javaBean转换为JSONObect时,如果有些属性不需要 ...
- Python图形编程探索系列-04-网上图片与标签组件的结合
跳转到自己的博客 任务设定 任务:从网上找到一张图片,然后将其显示在标签上? 网上图片网站:http://pic.58pic.com/58pic/17/56/38/52w58PICtER_1024.j ...
- [HihoCoder1369]网络流一·Ford-Fulkerson算法
思路: 最大流模板. #include<queue> #include<cstdio> #include<cctype> #include<vector> ...