package com.huawei.od2024;
import java.util.*;
import java.io.*;
import com.huawei.od2024.utils.IOdealer;
public class OD2024c2 implements Runnable{
/**
* 将一个CSV格式的数据文件a中包含有单元格引用的内容替换为对应单元格内容的实际值.
* 逗号分离值(Csv)逗号分隔值,csv格式的数据文件使用逗号作为分隔符a将各单位的内容进行分隔。
* 输入描述
* 1.输入只有一行数据,用逗号分隔每个单元格,行尾没有逗号.最多26个单元格,对应编号A-Z.
* 2.每个单元格的内容包含字母和数字,以及使用<>分隔的单元格引用,例如:<A>表示引用第一个单元的值。
* 3.每个单元格的内容,在替换前和替换后均不超过100个字符.
* 5.引用单元格的位置不受限制,运行排在后面的单元格被排在前面的单元格引用.
* 6.不存在循环引用Q的情况,比如下面这种场景是不存在的:
* A单元格:ACD<B>8u
* B单元格:Kay<A>dzqo
* 7.不存在多重<>的情况,一个单元格只能引用一个其他单元格.比如下面这种场景是不存在的:
* 单元格:aCd8u
* B单元格:kaydzqo
* C单元格:y<<A><B>>d
* 输出描述:
* 输出所有单元格展开的内容,单元格之间用逗号分隔.处理过程中出现错误时,输出字符串“-1”表示出错.
* 示例1
* 输入1,2<A>00
* 输出1,2100
* 说明
* 第二个单元中有对A单元的引用,A单元格的值为1,替换时,将A单元的内容替代<A>的位置,并和其他内容合并.
* 示例2
* 输入<B>12,1
* 输出
* 112,1
* 说明
* 第一个单元中有对B单元的引用,B单元格的值为1,替换时,将第二个数据单元的内容替代<B>的位置,并和其他内容合并。
*/
public static String[] cells;
// BufferedReader reader_002 = new BufferedReader(new InputStreamReader(System.in));
// BufferedWriter writer_002 = new BufferedWriter(new OutputStreamWriter(System.out));
public String str_input;
public String str_output;
// public IOdealer io = new IOdealer();
@Override
public void run(){
str_input = IOdealer.getStrInput(str_input);
cells = str_input.split(",");
for (int i=0;i<cells.length;i++){
if(!change(cells[i],i)){
IOdealer.pushStrOutput("-1"+"\n");
return;
}
}
for (int i=0;i<cells.length;i++){
IOdealer.pushStrOutput(cells[i]);
if(i!=cells.length-1) IOdealer.pushStrOutput(",");
}
IOdealer.pushStrOutput("\n");
// IOdealer.pushStrOutput("答案为:"+str_output+"\n");
}
public boolean change(String str_cur,int index){
int r1 = str_cur.indexOf("<"); //取"<?>"作为子串,r1为左坐标
int r2 = str_cur.indexOf(">"); //r2为右坐标
if(r1==-1 && r2==-1) return true;
else if (r1==-1 || r2==-1) return false; //'<' or '>' only
else if(r1>r2 || r2-r1!=2) return false; // > <
char target = str_cur.substring(r1+1,r2).charAt(0); //取<?>内部字母
char cur = (char)(index+'A');
if(!(cur>='A'&& cur<='Z')) return false; //出界
if(cur==target) return false; //暂时没看懂啥意思
int r_target = target-'A'; //字母对26取余
if(!change(cells[r_target],r_target)) return false;
String temp_result = "";
temp_result += str_cur.substring(0,r1);
temp_result += cells[r_target];
temp_result += str_cur.substring(r2+1);
cells[index] = temp_result;
return true;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
华为OD2024年机考笔试题.zip (19个子文件)
huawei_-od_2024_-java-master
hwod2024.iml 433B
src
com
huawei
od2024
OD2024c5.java 58B
MainMenu.java 2KB
OD2024c11.java 2KB
OD2024c12.java 129B
OD2024c9.java 2KB
utils
IOdealer.java 1KB
OD2024c2.java 4KB
OD2024c6.java 2KB
OD2024c3.java 2KB
OD2024c4.java 1KB
.idea
codeStyles
Project.xml 985B
uiDesigner.xml 9KB
vcs.xml 241B
workspace.xml 6KB
misc.xml 277B
modules.xml 263B
.gitignore 11B
项目说明.zip 68KB
共 19 条
- 1
资源评论
忘却的纪念
- 粉丝: 1210
- 资源: 184
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功