讨论/技术交流/Java简单算法题,有大佬帮忙看下吗/
Java简单算法题,有大佬帮忙看下吗

程序要求如下:
1、单行字符串的格式为:
<measurement>,<tagKey=tagValue>[,<tagKey=tagValue>] <fieldKey=fieldValue>[,<fieldKey=fieldValue>] [<timestamp>]
2、对于第1条中的字符串的进一步解释

2.1、字符串中用“<英文>”表示肯定会出现
2.2、字符串中用“[<英文>]”表示可能不出现, 也可能出现一次或者多次
2.3、字符串中用“<xxxKey=xxxValue>”表示xxxKey对应的值为xxxValue
2.4、注意“[,<tagKey=tagValue>]”和“<fieldKey=fieldValue>”之间有一个空格
2.5、注意“[,<fieldKey=fieldValue>]”和“[<timestamp>]”之间有个空格
2.6、注意xxxValue中可能会存在换行符,也有可能左右两侧会有双引号

3、对第1条中的字符串格式举例如下
3.1、“有个人,名叫zhangsan,今年21岁,在2021年3月16日的考试中,英语考了100分,物理考了90分,数学考了80分”可以表示为以下字符串:

user,name=zhang san,age=21 english=100,physics=90,math=80 2021031

3.2、“有个人,名叫lisi,英语考了88分”可以表示为以下字符串:
user,name=lisi english=88
3.3、“有个人,名叫wangwu,发送了个‘呵呵’的消息”可以表示为以下字符串:
user,name=wangwu message=“呵呵”
3.4、“有个人今年19岁,发送了多个‘呵呵’,并且多个‘呵呵’后都有换行符”可以表示为以下字符串:
user,name=wangwu,age=19 message=呵呵
呵呵
呵呵”
3.5、“有个人,名叫wangwu,今年18岁,家住西安,2021年4月10日发送了‘你好zhangsan’,并且‘你好’后有换行符”可以表示为以下字符串:
user,name=“wangwu”,age=18,addr=“西安” message=“你好
zhangsan” 20210410

1、解析上面的字符串,需要解析出tag属性对、field属性对,还有时间戳
1.1、比如:“user,name=zhangsan,age=21 english=100,physics=90,math=80 20210316”解析的结果如下:
measurement为:user
tags为:[name:zhangsan, age:21]
fields为:[english:100,physics:90,math:80]
timestamp为:20210316
1.2、比如“user,name=wangwu message=“呵呵
呵呵
呵呵””解析的结果如下:
measurement为:user
tags为:[name:wangwu]
fields为:[message:“呵呵
呵呵
呵呵”]
timestamp为:
2、程序代码可如下所示:
2.1、定一个Result对象, 大致属性如下:
public class Result {
private String measurement;
private Map<String, String> tags;
private Map<String, String> fields;
private long timestamp;
//此处省略get和set方法

//此处重写toString()方法,用于输出measurement、tags、fields、timestamp属性值

}
2.2、主要的代码编写在下面的这个类中
public class StrParser{
public static void main(String[] args){
String ql=“”;
Result result = parse(ql);
System.out.println(result);
}

private Result parse(String ql){
    Result result = new Result();
    //这个地方写你的解析逻辑代码
    
    return result;
}

}

1、如果“程序代码一”中的字符串出现多行,应如何解析?
2、出现多行的字符串举例如下:

user,name=zhangsan,age=21 english=100,physics=90,math=80 20210316
user,name=wangwu message=“呵呵”
user,name=wangwu,age=19 message=“呵呵
呵呵
呵呵”
user,name=lisi english=88
user,name=“wangwu”,age=18,addr=“西安” message=“你好
zhangsan” 20210410

//此处省略多个语句
3、在“程序代码一”中的2.2的StrParser类中,增加如下方法并实现之
public class StrParser{
public static void main(String[] args){
String ql=“”;
Result result = parse(ql);
System.out.println(result);
String qls=“”;
List<Result> results = parseLines(qls);
}

private List<Result> parseLines(String qls){
    List<Result> results = new ArrayList<>;
    //这个地方写你的解析逻辑代码
    
    return results;
}

}

共 0 个回复
暂无回复