public
class
Demo1
{
public
static
void
main(String[]
args)
{
StringBuffer
buffer
=
new
StringBuffer("123456")
System.out.println(buffer.toString())//输出123456
buffer.replace(0,
1,
"a")
System.out.println(buffer.toString())//输出a23456
}
}
这里简单介绍一下replace方法的使用,replace方法一共有三个参数,第一个参数是指定要替换的字符串的开始位置,第二个参数是指定要替换的字符串的结束位置(注意这里的结束位置不包括本身),第三个参数是指定想将字符串替换成什么内容。
如:原字符串内容为"123456",现在调用replace(0,
2,
"abc"),原字符串变为"abc3456"
给定一个完全由小写英文字母组成的字符串等差递增序列,该序列中的每个字符串的长度固定为 L,从 L 个 a 开始,以 1 为步长递增。例如当 L 为 3 时,序列为 { aaa, aab, aac, …, aaz, aba, abb, …, abz, …, zzz }。这个序列的倒数第27个字符串就是 zyz。对于任意给定的 L,本题要求你给出对应序列倒数第 N 个字符串。输入格式:
输入在一行中给出两个正整数 L(2 ≤ L ≤ 6)和 N(≤105)。
输出格式:
在一行中输出对应序列倒数第 N 个字符串。题目保证这个字符串是存在的。
输入样例:
3 7417
1.
输出样例:
pat
1.
上代码!!!
#include<stdio.h>
#include<math.h>
int main()
{/*
我们可以把a-z看成26进制,0表示a,25表示z。(类比,2进制每一位最多为1,16进制每位最多到15)
L位,那么可以表示26^L个数。(类比,3位2进制,可以表示0到7,一共8个数)
那么L位能表示0-26^L-1,求倒数第n个数,也就是求数字26^L-1-n+1=26^L-n
(26^L-n是第26^L-n+1个数字)
令p=26^L-n,然后把10进制转为26进制就行(就是不断%26,/26)(0代表a,25代表z)
然后输出结果,有可能位数L很大,所以在不够L的位上补'a'
*/
int L,N,y //L控制多少个字母组成 N控制输出倒数第N个
int i,x // i控制循环次数 x
scanf("%d",&L)
scanf("%d",&N)
N=N-1
for(i=1i<=Li++)
{
y=N/(pow(26,L-i)) //pow(2,3) 即2的3次方 这里是26的L-i次方
printf("%c",'z'-y)
x=pow(26,L-i)
N=N%x
}
return 0
}
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
import java.util.regex.*public class RepTest {
public static void main(String[] args) {
String src = ">=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,>=,<=,=,"
System.out.println("原串:"+src)
Matcher ma = Pattern.compile("[^><]=").matcher(src)
while (ma.find()) {
src = src.replaceAll(ma.group(), "")
}
System.out.println("替换:"+src)
//其实还有一个思路,你可以拿逗号切成数组,然后对数组元素进行判断,拿=号切也可以!
}
}