Lambda表达式计算字符串中小写字母个数

public static void main(String[] args) {

        String str ="a1b2c3d4e5f6d7*ABCDf";
        IntStream chars = str.chars();
        int reduce = (int) chars.filter(Character::isLowerCase).count();
        System.out.println(reduce);
    }
好的,我来回答你的问题。 1. 实现这个要求的思路是:先将字符串的数字和字母分离出来,数字和字母分别存入不同的列表,然后对数字和字母列表进行降序排列,最后将字母列表的大写字母放在小写字母的前面,再将数字和字母列表依次组合起来即可。以下是 Python 代码实现: ```python def sort_string(s): nums = [] letters = [] for c in s: if c.isdigit(): nums.append(c) else: letters.append(c) nums.sort(reverse=True) letters.sort(reverse=True) letters = sorted(letters, key=lambda x: x.islower()) return ''.join(letters + nums) ``` 2. 实现这个要求的思路是:先将表达式转换成逆波兰表达式,然后计算逆波兰表达式的值。以下是 Python 代码实现: ```python def calculate(expression): # 将表达式转换成逆波兰表达式 tokens = expression.split() stack = [] postfix = [] for token in tokens: if token.isdigit(): postfix.append(token) else: while stack and stack[-1] != '(' and get_precedence(stack[-1]) >= get_precedence(token): postfix.append(stack.pop()) stack.append(token) while stack: postfix.append(stack.pop()) # 计算逆波兰表达式的值 stack = [] for token in postfix: if token.isdigit(): stack.append(int(token)) else: b = stack.pop() a = stack.pop() stack.append(calculate_operator(a, b, token)) return stack[0] def get_precedence(operator): if operator in ['*', '/']: return 2 elif operator in ['+', '-']: return 1 else: return 0 def calculate_operator(a, b, operator): if operator == '+': return a + b elif operator == '-': return a - b elif operator == '*': return a * b elif operator == '/': return a // b ``` 例子的表达式转换成逆波兰表达式后为:1 2 + 3 4 * 2 / -,计算结果为 -3。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值