
思路:纵向比较,每个字符串从头挨个比较

- class Solution {
- public String longestCommonPrefix(String[] strs) {
- StringBuilder sb = new StringBuilder();
- for(int i = 0;i
0].length();i++){ - char c = strs[0].charAt(i);
- for(int j = 1;j
- if(i >= strs[j].length()|| strs[j].charAt(i)!= c) {
- return sb.toString();
- }
- }
- sb.append(c);
- }
- return sb.toString();
- }
- }
2.压缩字符串

思路:使用StringBuilder
- class Solution {
- public int compress(char[] chars) {
- if(chars.length == 1){
- return 1;
- }
- int count = 1;
- StringBuilder sb = new StringBuilder();
- for(int i = 0;i
- if(i == chars.length - 1){
- sb.append(chars[i]);
- if(count>1){
- sb.append(count);
- }
- break;
- }
- if(chars[i] != chars[i+1]){
- sb.append(chars[i]);
- if(count>1){
- sb.append(count);
- }
- count = 0;
- }
- count++;
- }
- char[] cs = new String(sb).toCharArray();
- int i = 0;
- for(char c : cs){
- chars[i] = c;
- i++;
- }
- return sb.length();
- }
- }
- class Solution {
- public int compress(char[] chars) {
- if(chars.length == 1){
- return 1;
- }
- int slow = 0;
- int fast = 0;
- for(int i = 0;i
- if(i == chars.length - 1 || chars[i] != chars[i + 1]) {
- chars[fast++] = chars[i];
- int num = i - slow + 1;
- if (num > 1) {
- int anchor = fast;
- while (num > 0) {
- chars[fast++] = (char)(num % 10 + '0');
- num /= 10;
- }
- reverse(chars, anchor,fast - 1);
- }
- slow = i + 1;
- }
- }
- return fast;
- }
- public void reverse(char[] chars, int left, int right) {
- while (left < right) {
- char temp = chars[left];
- chars[left] = chars[right];
- chars[right] = temp;
- left++;
- right--;
- }
- }
-
- }
3.表示数值的字符串
请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。
数值(按顺序)可以分成以下几个部分:
- 若干空格
- 一个 小数 或者 整数
- (可选)一个
'e' 或 'E' ,后面跟着一个 整数 - 若干空格
小数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符(
'+' 或 '-') - 下述格式之一:
- 至少一位数字,后面跟着一个点
'.' - 至少一位数字,后面跟着一个点
'.' ,后面再跟着至少一位数字 - 一个点
'.' ,后面跟着至少一位数字
整数(按顺序)可以分成以下几个部分:
- (可选)一个符号字符(
'+' 或 '-') - 至少一位数字
部分数值列举如下:
["+100", "5e2", "-123", "3.1416", "-1E-16", "0123"]
部分非数值列举如下:
["12e", "1a3.14", "1.2.3", "+-5", "12e+5.4"]
- class Solution {
- public boolean isNumber(String s) {
- if(s == null||s.length() == 0){
- return false;
- }
- char[] str = s.trim().toCharArray();
- if(str.length == 0){
- return false;
- }
- boolean isDot = false;
- boolean isE = false;
- boolean isSign = false;
- boolean isNum = false;
- int i = 0;
- // System.out.print(str.length);
- for(i = 0;i
- if(str[i]>='0'&&str[i]<='9'){
- isNum = true;
- }else if(str[i] == '.'){
- if(isDot || isE){
- return false;
- }
- isDot = true;
- isE = false;
- }else if(str[i] == 'e'||str[i] == 'E'){
- if(isE || !isNum){
- return false;
- }
- isE = true;
- isNum = false;
- isSign = false;
- }else if(str[i] == '+'||str[i] == '-'){
- if(i!= 0 && str[i-1] != 'e' && str[i-1] != 'E'){
- return false;
- }
- isSign = true;
- }else{
- return false;
- }
- }
- return isNum;
- }
- }
-
相关阅读:
【ELM预测】基于matlab探路者算法优化极限学习机预测(含前后对比)【含Matlab源码 2204期】
网络卡顿怎么办?快来试试华为云CDN
【UnityUGUI】复合控件详解,你还记得多少
leetcode 10. 正则表达式匹配
1786_MTALAB代码生成把通用函数生成独立文件
数据结构和算法 IV
【工作流引擎】Activiti的使用03
微信建行支付对接
AI免费写作工具,怎么选择AI免费写作工具
System design summary
-
原文地址:https://blog.csdn.net/Candy___i/article/details/132732335