thoughtwork西安java笔试_ThoughtWorks19届秋招内推笔试测试题——总结

本文介绍了一个用于渲染道路网格的工具类,包括初始化渲染网格的方法、格式检查、特殊字符判断等功能。通过对输入的道路网格进行处理,确保其连通性和正确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

packageutil;importjava.util.regex.Matcher;importjava.util.regex.Pattern;/*** 工具类

* 1.3,完美

*@authorxanwidtf@foxmail.com

**/

public classutil {//初始化渲染网格的方法

public staticString[][] constructGrid(String[][] s,String[][] b){

String[][] small=s; //道路网格

String[][] big=b; //渲染网格

for(int i=0;i

{for(int j=0;j

{if(small[i][j]=="[R]")

big[i*2+1][j*2+1]="[R]";

}

}returnbig;

}/*** 给输入的道路网格​的连通性定义进行格式检查,

* 是否包含英文字母和汉字

*@params

*@returntrue为包含,false为不包含*/

public static booleancontainsABC(String s){

Pattern p= Pattern.compile("^[A-Za-z0-9\u4e00-\u9fa5]+$");//定义规则 ,该规则为大小写字母

Matcher m =p.matcher(s);returnm.find();

}/*** 判断是否含有特殊字符",;"和空格3个不包含在内

*

*@params

*@returntrue为包含,false为不包含*/

public static booleanisSpecialChar(String s) {

String regEx= "[_`~!@#$%^&*()+=|{}':'\\[\\].<>/?~!@#¥%……&*()——+|{}【】‘;:”“’。,、?]|\n|\r|\t";

Pattern p=Pattern.compile(regEx);

Matcher m=p.matcher(s);returnm.find();

}/*** 通过正则表达式的方式获取字符串中特定字符的个数

*@paramtext 指定的字符串

*@return指定字符的个数*/

public static intpattern(String command,String str) {//根据指定的字符构建正则

Pattern pattern =Pattern.compile(str);//构建字符串和正则的匹配

Matcher matcher =pattern.matcher(command);int count = 0;//循环依次往下匹配

while (matcher.find()){ //如果匹配,则数量+1

count++;

}returncount;

}/*** 匹配特定规则

*@paramcommand

*@paramstr

*@return符合即返回true*/

public static booleanpatternMain(String command,String str) {//根据指定的字符构建正则

Pattern pattern =Pattern.compile(str);//构建字符串和正则的匹配

Matcher matcher =pattern.matcher(command);returnmatcher.matches();

}/*** 网格联通指令格式检测

*@params

*@return正确返回true*/

public static booleancommandCheck(String s){boolean result=false;int num=pattern(s,";");

String[] arr=new String[num+1];if(!util.containsABC(s)&&!util.isSpecialChar(s)){ //s只能为

if(num>0)

{

arr=s.split(";");//System.out.println(arr.length);//调试输出

if(arr.length>0&&arr.length>num){for(int i=0;i

{if(arr[i]==null||!arr[i].equals("")){ //判断不允许出现空值

result=patternMain(arr[i],"\\d+,\\d+ \\d+,\\d+");

}else{//System.out.println("出现空值");//调试输出

return false; //如果用result=false,有可能在for循环后变为true

}

}

}else{return false;

}

}else{

result=patternMain(s,"\\d+,\\d+ \\d+,\\d+");

}

}else{return false;

}returnresult;

}/*** 联通性检测

*@return

*/

public static boolean Maze(String s,int m,intn){boolean result=true;

String str=s.replaceAll("\\D+","");//System.out.println("连通性测试:"+str);//调试输出

for(int i=0;i

{int x=Integer.parseInt(String.valueOf(str.charAt(i))); //0

int y=Integer.parseInt(String.valueOf(str.charAt(i+2))); //2

int xx=Integer.parseInt(String.valueOf(str.charAt(i+1))); //1

int yy=Integer.parseInt(String.valueOf(str.charAt(i+3))); //3

if(x==y||xx==yy){//System.out.println(" "+x+y+" "+xx+yy);//调试输出

if(x

result=true;

}else{

result=false;

}

}else{return false;

}

}returnresult;

}/*** 通过提取连通性指令的有效数值,渲染网格

*@params

*@paramarr

*@return返回一个二维数组*/

public staticString[][] drawGrid(String s,String[][] arr){

String[] temp=s.split(";");

String[] Temp=newString[temp.length];for(int j=0;j

{

Temp[j]=temp[j].replaceAll("\\D+","");

}for(int i=0;i

{int k=0;int x = 0,y = 0;if(Temp[i].charAt(k)==Temp[i].charAt(k+2)){

x=Integer.parseInt(String.valueOf(Temp[i].charAt(k)))*2+1;

y=Integer.parseInt(String.valueOf(Temp[i].charAt(k+1)))*2+1+1;//System.out.println("xy"+x+" "+y);//调试输出

arr[x][y]="[R]";

}else if(Temp[i].charAt(k+1)==Temp[i].charAt(k+3)){

x=Integer.parseInt(String.valueOf(Temp[i].charAt(k)))*2+1+1;

y=Integer.parseInt(String.valueOf(Temp[i].charAt(k+1)))*2+1;//System.out.println("xy"+x+" "+y);//调试输出

arr[x][y]="[R]";

}

}returnarr;

}/*** 打印输出数组

*@paramarr*/

public static voidprintGrid(String[][] arr){for(int i=0;i

{for(int j=0;j

{

System.out.print(arr[i][j]+" ");

}

System.out.println();

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值