Easy
题目描述
字母数字字符串的值可以定义为:
- 如果字符串只包含数字,则值为该字符串在十进制下的数字表示。
- 否则,值为该字符串的长度。
给定一个由字母数字字符串组成的数组 strs,返回 strs 中任意字符串的最大值。
示例 1:
输入:strs = ["alic3","bob","3","4","00000"]
输出:5
解释:
- "alic3" 包含字母和数字,所以它的值是它的长度,即 5。
- "bob" 只包含字母,所以它的值也是它的长度,即 3。
- "3" 只包含数字,所以它的值是它的数字表示,即 3。
- "4" 也只包含数字,所以它的值是 4。
- "00000" 只包含数字,所以它的值是 0。
因此,最大值是 5,来自 "alic3"。
示例 2:
输入:strs = ["1","01","001","0001"]
输出:1
解释:
数组中的每个字符串的值都是 1。因此,我们返回 1。
约束:
1 <= strs.length <= 1001 <= strs[i].length <= 9strs[i]只包含小写英文字母和数字。
解题思路
这道题的核心在于理解两种不同的计算规则:
- 如果字符串只包含数字,计算其数值大小
- 否则计算字符串长度
解题思路:
首先遍历数组中的每个字符串,对每个字符串判断是否只包含数字:
- 可以通过遍历字符串的每个字符,检查是否都是数字字符
- 也可以使用语言自带的函数来判断
如果字符串只包含数字,将其转换为整数;否则返回字符串长度。在遍历过程中维护最大值即可。
需要注意的边界情况:
- 字符串可能以0开头(如"00000"),转换为整数后值为0
- 单个数字字符串的处理
时间复杂度为O(n×m),其中n是字符串数量,m是字符串平均长度。空间复杂度为O(1)。
代码实现
class Solution {
public:
int maximumValue(vector<string>& strs) {
int maxVal = 0;
for (const string& str : strs) {
bool isDigit = true;
for (char c : str) {
if (!isdigit(c)) {
isDigit = false;
break;
}
}
int value;
if (isDigit) {
value = stoi(str);
} else {
value = str.length();
}
maxVal = max(maxVal, value);
}
return maxVal;
}
};
class Solution:
def maximumValue(self, strs: List[str]) -> int:
max_val = 0
for s in strs:
if s.isdigit():
value = int(s)
else:
value = len(s)
max_val = max(max_val, value)
return max_val
public class Solution {
public int MaximumValue(string[] strs) {
int maxVal = 0;
foreach (string str in strs) {
bool isDigit = true;
foreach (char c in str) {
if (!char.IsDigit(c)) {
isDigit = false;
break;
}
}
int value;
if (isDigit) {
value = int.Parse(str);
} else {
value = str.Length;
}
maxVal = Math.Max(maxVal, value);
}
return maxVal;
}
}
var maximumValue = function(strs) {
let maxVal = 0;
for (let str of strs) {
let isDigit = true;
for (let c of str) {
if (c < '0' || c > '9') {
isDigit = false;
break;
}
}
let value;
if (isDigit) {
value = parseInt(str);
} else {
value = str.length;
}
maxVal = Math.max(maxVal, value);
}
return maxVal;
};
复杂度分析
| 复杂度 | 大小 |
|---|---|
| 时间复杂度 | O(n × m) |
| 空间复杂度 | O(1) |
其中 n 是字符串数组的长度,m 是字符串的平均长度。
相关题目
- . Maximum Subarray (Medium)