1020
package Y2014;
import java.util.Scanner;
/*题目二:
给定一个仅包含“A”-“Z”的字符串,我们可以使用以下方法对其进行编码:
1、每个包含k个字符的子字符串应该被编码到“kX”,其中“X”是这个子字符串中唯一的字符。
2、如果子字符串的长度为1,则“1”应被忽略。
输入
第一行包含一个整数N(1 <= N <= 100),表示测试用例的数量。
下一个N行包含N个字符串。每个字符串只包含“A”-“Z”,长度小于10000。
输出
对于每个测试用例,将编码的字符串输出到一行中。(Encoding —–对应杭电oj的1020题)
*
*/
public class P2014_2_test {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int count = scanner.nextInt();
int i = 0, j = 0,countNum = 0;
String str;
String str2 = "";
char sCopy = 0;
while (i < count) {
str = scanner.next();//临时循环输入变量
sCopy = 0; //当前字母
j = 0;
str2 = ""; //用来存最后整体的输出
countNum = 0; //当前字母出现的个数
while (j < str.length()) {
if (sCopy != str.charAt(j)) {
if (countNum > 1) {
str2 = str2 + countNum + sCopy;
} else if (j != 0)
str2 = str2 + sCopy;
countNum = 0;
sCopy = str.charAt(j);
}
if (sCopy == str.charAt(j)) {
countNum++;
}
j++; //j从0开始的
if (j == str.length()) {
if (countNum > 1) {
str2 = str2 + countNum + sCopy;
} else if (j != 0)
str2 = str2 + sCopy;
System.out.println(str2);
}
}
i++;
}
scanner.close();
}
}
1088
package Y2014;
/*
*
题目一:
编写一个小型的html浏览器。
它只需要显示输入文件的内容,只知道html命令(标记)< br>,这是一个linebreak和< hr>,它是一个水平标尺。
然后,您应该将所有制表符、空格和换行符视为一个空格,并在一行中显示不超过80个字符的结果文本。
输入由应该显示的文本组成。
该文本由一个或多个空格、制表符或换行符分隔的单词和HTML标记组成。
单词是字母、数字和标点符号的序列。例如,“abc,123”是一个词,但是“abc, 123”是两个单词,即“abc”和“123”。
一个单词总是少于81个字符,并且不包含任何’ < ‘或’ > ‘。
所有HTML标签都是< br >或< hr >。
输出您应该使用以下规则显示所产生的文本:
如果你在输入中读了一个字,结果线的长度不会超过80个字符,打印出来,然后在新的一行上打印出来。
如果您在输入中读取< br >,那么就开始一个新行。如果您在输入中读取< hr >,那么就开始一条新行,
除非您已经在一行的开头,显示80个字符“-”并开始一个新行(再次)。最后一行以换行符结束。
(编写一个浏览器输入输出——对应杭电oj第1088题
*/
import java.util.Scanner;
public class P2014_1 {
public static void main(String[] args) {
Scanner sn = new Scanner(System.in);
int sumChar = 0;//一行字符个数统计
String str; //单词暂时存放变量
while(sn.hasNext()) {
str = sn.next();
if(str.equals("<br>")) { //处理此类情况
System.out.println();
sumChar = 0;
} else if(str.equals("<hr>")) {
if(sumChar != 0)
System.out.println();
System.out.println("--------------------------------------------------------------------------------");
sumChar = 0;
} else {
if(sumChar + str.length() + 1 <= 80) { //该行还能再插入值
if(sumChar !=0)
System.out.print(" ");
System.out.print(str);
sumChar+=str.length()+1;
} else { //该行字数已超则换行到下一行去显示
System.out.print(String.format("/n%s", str));
sumChar=str.length();
}
}
}
System.out.println();
sn.close();
}
}