解析大端字符串(华为实习生笔试)

版权声明:本文为博主原创文章,转载请附上博文链接 https://blog.csdn.net/weixin_40807247/article/details/89021996

思路:
在这里插入图片描述
在这里插入图片描述
1.将读取的字符串,转成字符数组,用于遍历
2.遍历字符数组中每一个元素,截取到第9个元素,也就是拿到一个编码组
3.拿到一个编码组,对这个编码组的首字符进行判断,为0对除首位的编码组进行反转存储到动态数组中,为1按顺序存储到动态数组中
4.处理好一个编码组,接着继续遍历到下一个编码的结尾,在重复上述操作

package com.huawei;

import java.util.ArrayList;
import java.util.Scanner;

/*2
0abcdefgh1abcdefgh
hgfedcba abcdefgh*/
public class Main {
	public static void main(String[] args) {
		//定义一个存储最终解析之后的大端字符串
		ArrayList<Character> list = new ArrayList<Character>();
		Scanner sc = new Scanner(System.in);
		//输入数据
		int n = sc.nextInt();
		String str = sc.next();
		//遍历字符串中每一个字符
		char[] chars = str.toCharArray();
		for (int i = 0; i < chars.length; i++) {
			if ((i+1) % 9 == 0) {
				//判断编码组首位是0还是1
				if(chars[i-8] == '0'){
					//为0,进行反转装入ArrayList中
					for (int j = i; j > i-8; j--) {
						list.add(chars[j]);
					}	
					if (i != chars.length-1) {
						list.add(' ');
					}
				}
				else if(chars[i-8] == '1'){
					//为1,按顺序装入ArrayList中
					for (int j = i-7; j < i+1; j++) {
						list.add(chars[j]);
					}	
					if (i != chars.length-1) {
						list.add(' ');
					}
				}
			}
		}
		for (int i = 0; i < list.size(); i++) {
			System.out.print(list.get(i));
		}
	}
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_40807247/article/details/89021996