题目描述
湖南中医药大学有含浦、东塘 2 个校区,学校办学历史悠久,前身为 1934 年的湖南国医专科学校,1953年创办湖南中医进修学校,1960 年创建普通高等本科院校——湖南中医学院,1979 年成为全国首批取得中医类研究生学历教育资格的院校,1990 年原湖南科技大学成建制并入湖南中医学院,2002 年与湖南省中医药研究院合并,2006 年经教育部批准更名为湖南中医药大学,2012 年进入湖南省一本招生序列。目前,学校与湖南省中医药研究院实行校院合一的管理体制。学校学科门类齐全、中医药特色鲜明。学校设有 18 个学院、24 个本科专业,涵盖医、理、工、管、文等 5 大学科门类。中医诊断学在本学科研究领域居国内领先水平。
小 F 居住在含浦校区,他想和东塘校区的同学小 L 聊天,为了保证沟通安全,他发明了一种加密方式,这种加密方式是这样的:对于一个 01 串,小 F 会将其从左到右每 8 位分成一组,最后一组可能不足 8 位,对每组进行逆序操作,即如果原来是 bLbL+1bL+2 · · · bR−1bR, 逆序之后变成 bRbR−1bR−2 · · · bL−1bL。现在小 F 已经加密好了一个串,并且将其发给了小 L,你能帮助小 L 得到这串密文对应的原始信息吗?
输入
单组数据。
一行一个 01 串,代表加密后的字符串,串长度大于 0, 小于等于 100。
输出
一行字符串,代表加密后的字符串所对应的原始信。
样例输入
100010110011101
样例输出
110100011011100
代码实现
import java.util.Scanner;
public class Main {
public static void swap(char a[],int i,int j) {
//交换函数
char t;
t = a[i];
a[i] = a[j];
a[j] = t;
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while(sc.hasNext()) {
String str = sc.next();
char a[] = str.toCharArray();
for(int i=0;i<a.length;) {
//在整个数组内进行分区
int left = i;
int right = Math.min(a.length-1,i+7);
//符合条件的进行逆序
while(left<right) {
swap(a,left,right);
left++;
right--;
}
//若大于一段分区,继续进行
//若加8后超出范围,结束循环
i += 8;
}
for(int i=0;i<a.length;i++) {
if(i==a.length-1) {
//输出到数组最后一个
System.out.print(a[i] + "\n");
}else
System.out.print(a[i]);
}
}
}
}