问题描述
最近在练习字符串类型的算法题时候,编程语言内部自带了很多api还有一些实用的方法,在此总结一下用法,方便后面回顾使用。
字符串操作中常用方法
Character类
1.返回的是一个boolean类型的,可以用于去除字符串中非数字和字母的字符
Character.isLetterOrDigit()
2.判断是否是字符
Character.isDigit()
3.判断是否是小写字符
Character.isLowerCase()
4.转换成小写或者大写
Character.toLowerCase()
Character toUpperCase()
HashMap || HashSet
一般题中要求去重的时候,可以使用HashSet,set表中不支持有重复元素
HashSet<Integer> set = new HashSet<>(); set.add(1);//添加元素 System.out.println(set.size()); //长度 set.remove(1); //删除元素 System.out.println(set.isEmpty()); // 判断是否是空 set.clear(); //清除所有元素 //判断是否包含某个元素 ,布尔类型 System.out.println(set.contains(1));
一般题中要统计字符出现的次数,可以使用HashMap来统计,支持重复
HashMap<Character,Integer> map = new HashMap<>(); map.put('1',1); //压入元素 map.get('1');// 提取键值 //获取键值,默认为0 map.getOrDefault('1',0); System.out.println(map.isEmpty()); //判断是否为空 System.out.println(map.containsKey('1')); //判断是否含有键 map.remove('1'); //删除 map.values(); //显示所有的值 map.size(); //获得每一个键和值 for(Map.Entry<Character,Integer> entry: map.entrySet()){ int key = entry.getKey(),value = entry.getValue(); }
验证数字是否超过int类型范围
这类题经常遇到,所以总结一下。以这个例子
public static void main(String[] args) { String a = "12312"; int result = 0; for(int i =0;i<a.length();i++){ //拿到数字 int temp = result*10+(a.charAt(i)-'0'); if(temp/10 != result){ System.out.println(1); } result = temp; } }