1550. 存在连续三个奇数的数组 / 1935. 可以输入的最大单词数

1550. 存在连续三个奇数的数组【简单题】

思路:

  1. 定义int类型cnt用来统计奇数的个数。
  2. 增强for循环遍历数组arr,遍历到的元素为n,如果n为奇数则cnt++,否则重新开始计数;如果cnt==3,说明此时已经有了连续三个奇数,那么此时直接返回true。
  3. 如果成功把arr遍历完,那么说明数组没有连续3个奇数,于是返回false。

代码:

class Solution {
    public boolean threeConsecutiveOdds(int[] arr) {
        int cnt = 0;
        for (int n : arr){
            if (n % 2 != 0){
                cnt++;
            }else {
                cnt = 0;
            }
            if (cnt == 3){
                return true;
            }
        }
        return false;
    }
}

用时:

在这里插入图片描述


1935. 可以输入的最大单词数【简单题】

思路:

  1. 定义int类型变量ans用来存储可以输入的单词数,初值为0。
  2. 增强for循环遍历将text以空格分割得到的数组,遍历到的当前元素为str,表示每个单词;定义哈希set存储输入当前单词需要用到的字母;定义布尔标志位flag表示当前单词str是否可以被输入;遍历键盘坏掉的每个字母,如果该字母在set中存在,则表示输入当前单词需要用到该已损坏的字母键于是flag置为false,并退出循环。
  3. 损坏键盘字母遍历结束之后,如果flag为true,说明当前单词可以被输入,于是ans++。
  4. 所有的单词遍历检查完之后,返回ans即为可以输入的最大单词数。

代码:

class Solution {
    public int canBeTypedWords(String text, String brokenLetters) {
        int ans = 0;
        for (String str : text.split(" ")){
            Set<Character> set = new HashSet<>();
            for (char ch : str.toCharArray()){
                set.add(ch);
            }
            boolean flag = true;
            for (char ch : brokenLetters.toCharArray()){
                if (set.contains(ch)){
                    flag = false;
                    break;
                }
            }
            if (flag){
                ans++;
            }
        }
        return ans;
    }
}

用时:

这题官方题解没有java版本,但是我的只有6ms,击败22.87%。


每日一题困难题,不写了。

今天去学校!卷起来卷起来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是C++代码实现小型计算器,可以实现你所列出的所有功能: ```c++ #include<iostream> #include<cmath> using namespace std; // 计算器函定义 void calculator() { int choice; int num1, num2; while (true) { cout << "\n请选择要进行的操作:" << endl; cout << "1.加法" << endl; cout << "2.减法" << endl; cout << "3.乘法" << endl; cout << "4.除法" << endl; cout << "5.取模运算" << endl; cout << "6.判断字的位" << endl; cout << "7.计算圆面积" << endl; cout << "8.判断闰年" << endl; cout << "9.成绩转换" << endl; cout << "10.计算从1到输入之间的奇数和" << endl; cout << "11.计算从1到输入之间的偶和" << endl; cout << "12.输出从1到输入之间所有3的倍" << endl; cout << "13.求即被3整除又被5整除的" << endl; cout << "14.求水仙花" << endl; cout << "15.求最大值" << endl; cout << "16.求最大最小值" << endl; cout << "17.数组-冒泡排序" << endl; cout << "18.数组-矩阵转置" << endl; cout << "19.数组-求矩阵对角线和" << endl; cout << "20.统计单词输入" << endl; cout << "21.静态创建链表" << endl; cout << "22.动态创建链表" << endl; cout << "23.学生成绩排序" << endl; cout << "24.学生成绩普涨10分" << endl; cout << "25.退出" << endl; cin >> choice; switch (choice) { case 1: cout << "请输入两个:" << endl; cin >> num1 >> num2; cout << "两之和为:" << num1 + num2 << endl; break; case 2: cout << "请输入两个:" << endl; cin >> num1 >> num2; cout << "两之差为:" << num1 - num2 << endl; break; case 3: cout << "请输入两个:" << endl; cin >> num1 >> num2; cout << "两之积为:" << num1 * num2 << endl; break; case 4: cout << "请输入两个:" << endl; cin >> num1 >> num2; if (num2 == 0) { cout << "除不能为0,请重新输入!" << endl; break; } cout << "两之商为:" << num1 / num2 << endl; break; case 5: cout << "请输入两个:" << endl; cin >> num1 >> num2; if (num2 == 0) { cout << "除不能为0,请重新输入!" << endl; break; } cout << "两取模运算的结果为:" << num1 % num2 << endl; break; case 6: cout << "请输入一个整:" << endl; cin >> num1; cout << "该整的位为:" << to_string(num1).length() << endl; break; case 7: cout << "请输入半径:" << endl; cin >> num1; cout << "圆的面积为:" << 3.14 * pow(num1, 2) << endl; break; case 8: cout << "请输入一个年份:" << endl; cin >> num1; if ((num1 % 4 == 0 && num1 % 100 != 0) || (num1 % 400 == 0)) { cout << num1 << "年是闰年!" << endl; } else { cout << num1 << "年不是闰年!" << endl; } break; case 9: cout << "请输入成绩:" << endl; cin >> num1; if (num1 >= 90 && num1 <= 100) { cout << "A" << endl; } else if (num1 >= 80 && num1 < 90) { cout << "B" << endl; } else if (num1 >= 70 && num1 < 80) { cout << "C" << endl; } else if (num1 >= 60 && num1 < 70) { cout << "D" << endl; } else if (num1 >= 0 && num1 < 60) { cout << "E" << endl; } else { cout << "输入成绩有误!" << endl; } break; case 10: cout << "请输入一个整:" << endl; cin >> num1; cout << "从1到" << num1 << "之间的奇数和为:" << (num1 + 1) / 2 * (num1 % 2) + num1 / 2 * ((num1 + 1) % 2) << endl; break; case 11: cout << "请输入一个整:" << endl; cin >> num1; cout << "从1到" << num1 << "之间的偶和为:" << num1 / 2 * 2 * (num1 % 2) + (num1 + 1) / 2 * ((num1 + 1) % 2) << endl; break; case 12: cout << "请输入一个整:" << endl; cin >> num1; cout << "从1到" << num1 << "之间所有3的倍为:"; for (int i = 3; i <= num1; i += 3) { cout << i << " "; } cout << endl; break; case 13: cout << "请输入一个整:" << endl; cin >> num1; cout << "即被3整除又被5整除的为:"; for (int i = 15; i <= num1; i += 15) { cout << i << " "; } cout << endl; break; case 14: cout << "所有的水仙花为:"; for (int i = 100; i <= 999; i++) { int a = i / 100; int b = i / 10 % 10; int c = i % 10; if (pow(a, 3) + pow(b, 3) + pow(c, 3) == i) { cout << i << " "; } } cout << endl; break; case 15: cout << "请输入两个:" << endl; cin >> num1 >> num2; cout << "最大值为:" << max(num1, num2) << endl; break; case 16: cout << "请输入三个:" << endl; cin >> num1 >> num2 >> num2; cout << "最大值为:" << max(max(num1, num2), num3) << endl; cout << "最小值为:" << min(min(num1, num2), num3) << endl; break; case 17: int arr[10]; cout << "请输入10个:" << endl; for (int i = 0; i < 10; i++) { cin >> arr[i]; } for (int i = 0; i < 9; i++) { for (int j = 0; j < 9 - i; j++) { if (arr[j] > arr[j + 1]) { int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } } cout << "排序后的数组为:"; for (int i = 0; i < 10; i++) { cout << arr[i] << " "; } cout << endl; break; case 18: int matrix[2][3]; cout << "请输入一个2*3的矩阵:" << endl; for (int i = 0; i < 2; i++) { for (int j = 0; j < 3; j++) { cin >> matrix[i][j]; } } cout << "矩阵转置后为:" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 2; j++) { cout << matrix[j][i] << " "; } cout << endl; } break; case 19: int matrix1[3][3]; cout << "请输入一个3*3的矩阵:" << endl; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { cin >> matrix1[i][j]; } } int sum = 0; for (int i = 0; i < 3; i++) { sum += matrix1[i][i]; } cout << "矩阵对角线和为:" << sum << endl; break; case 20: string s; cout << "请输入一段英文文本:" << endl; getline(cin, s); int count = 0; for (int i = 0; i < s.length(); i++) { if (s[i] == ' ') { count++; } } cout << "单词为:" << count + 1 << endl; break; case 21: struct Node { int data; Node* next; }; Node* head = new Node; head->next = NULL; cout << "请输入链表长度:" << endl; cin >> num1; cout << "请输入链表元素:" << endl; for (int i = 0; i < num1; i++) { Node* p = new Node; cin >> p->data; p->next = head->next; head->next = p; } cout << "链表为:"; Node* p = head->next; while (p) { cout << p->data << " "; p = p->next; } cout << endl; break; case 22: struct Node1 { int data; Node1* next; }; Node1* head1 = new Node1; head1->next = NULL; Node1* p1 = head1; cout << "请输入链表元素,输入0结束输入:" << endl; while (true) { Node1* q = new Node1; cin >> q->data; if (q->data == 0) { break; } q->next = NULL; p1->next = q; p1 = q; } cout << "链表为:"; Node1* q1 = head1->next; while (q1) { cout << q1->data << " "; q1 = q1->next; } cout << endl; break; case 23: struct Student { string name; int score; }; Student stu[3]; cout << "请输入3个学生的姓名和成绩:" << endl; for (int i = 0; i < 3; i++) { cin >> stu[i].name >> stu[i].score; } for (int i = 0; i < 2; i++) { for (int j = 0; j < 2 - i; j++) { if (stu[j].score < stu[j + 1].score) { Student temp = stu[j]; stu[j] = stu[j + 1]; stu[j + 1] = temp; } } } cout << "按照成绩从高到低排序后的学生信息为:" << endl; for (int i = 0; i < 3; i++) { cout << "姓名:" << stu[i].name << ",成绩:" << stu[i].score << endl; } break; case 24: int score[3]; cout << "请输入3个学生的成绩:" << endl; for (int i = 0; i < 3; i++) { cin >> score[i]; score[i] += 10; } cout << "加分后的学生成绩为:" << endl; for (int i = 0; i < 3; i++) { cout << score[i] << " "; } cout << endl; break; case 25: cout << "退出程序!" << endl; exit(0); default: cout << "输入有误,请重新输入!" << endl; break; } } } int main() { calculator(); return 0; } ``` 运行程序后,根据菜单提示选择相应的功能即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值