C/C++每日一练(20230324)

简介: C/C++每日一练(20230324)

1. 搜索旋转排序数组


整数数组 nums升序排列,数组中的值 互不相同


在传递给函数之前,nums 在预先未知的某个下标 k(0 <= k < nums.length)上进行了 旋转,使数组变为 [nums[k], nums[k+1], ..., nums[n-1], nums[0], nums[1], ..., nums[k-1]](下标 从 0 开始 计数)。例如, [0,1,2,4,5,6,7] 在下标 3 处经旋转后可能变为 [4,5,6,7,0,1,2] 。


给你 旋转后 的数组 nums 和一个整数 target ,如果 nums 中存在这个目标值 target ,则返回它的下标,否则返回 -1 。


示例 1:

输入:nums = [4,5,6,7,0,1,2], target = 0

输出:4


示例 2:

输入:nums = [4,5,6,7,0,1,2], target = 3

输出:-1


示例 3:

输入:nums = [1], target = 0

输出:-1


提示:

   1 <= nums.length <= 5000

   -10^4 <= nums[i] <= 10^4

   nums 中的每个值都 独一无二

   题目数据保证 nums 在预先未知的某个下标上进行了旋转

   -10^4 <= target <= 10^4


进阶:你可以设计一个时间复杂度为 O(log n) 的解决方案吗?

出处:

https://edu.csdn.net/practice/23630838

代码:

#include <bits/stdc++.h>
using namespace std;
class Solution
{
public:
    int search(vector<int> &nums, int target)
    {
        int lo = 0;
        int hi = nums.size() - 1;
        while (lo <= hi)
    {
            int mid = lo + (hi - lo) / 2;
            if (nums[mid] == target)
            {
                return mid;
            }
            if (nums[lo] <= nums[mid])
            {
        if (nums[lo] <= target && target < nums[mid])
        {
            hi = mid - 1;
        }
        else
        {
            lo = mid + 1;
        }
            }
            else
            {
                if (nums[mid] < target && target <= nums[hi])
                {
                    lo = mid + 1;
                }
                else
                {
                    hi = mid - 1;
                }
            }
    }
        return -1;
    }
};
int main()
{
  Solution s;
  vector<int> nums = {4,5,6,7,0,1,2};
    cout << s.search(nums, 0) << endl;
    nums = {4,5,6,7,0,1,2};
    cout << s.search(nums, 3) << endl;
    return 0;
}

输出:

4

-1


2. 字符串中出现最多的字母


一个字符串(string)里出现的次数最多的称为幸运字符。例如,在字符串abbccc中,c 出现的次数最多,所以这个幸运字符就是 c 啦!


Input 第一行是测试数据的组数n,接下来的每组测试数据占一行,每行数据不超过1000个字符且非空。 字符串里只含小写字母。


Output 每组数据对应输出一行,包括出现次数最多的字符和该字符出现的次数,中间是一个空格。如果有多个字符出现的次数相同且最多,那么输出ASCII码最小的那一个字符。


Sample Input

2

abbccc

adfadffasdf

Sample Output

c 3 f 4

出处:

https://edu.csdn.net/practice/23630839

代码:

#include <string.h>
#include"stdio.h"
int main(void)
{
    int n,i, z[26], max, xia;
    char c[1050], ch;
    scanf("%d",&n);
    while(n>0)
    {
        n--;
        scanf("%s", c);
        for(i=0; i<26; i++)
            z[i]=0;
        xia=strlen(c);
        for(i=0; i<xia; i++)
            z[c[i]-'a']++;
        max=z[0]; xia=0;
        for(i=1; i<=25; i++)
        if(z[i]>max){ 
            max=z[i];
            xia=i;
        }
        ch='a'+xia;
        printf("%c %d\n", ch, max);
    }
    return 0;
}


输入输出:

2

abbccc

c 3

adfadffasdf

f 4


3. 从指定位置插入字符串


编写程序,输入字符串S1和S2以及插入位置n,在字符串S1中的指定位置n处插入字符串S2。

例如,输入“jiangsu”、“123”和位置3,则输出“ji123angsu”。

出处:

https://edu.csdn.net/practice/23630840

代码:

#include <iostream>
#include <string>
using namespace std;
int main()
{
    string str1;
    string str2;
    int pos;
    do
    {
        if ((cin >> str1 >> str2 >> pos) && (pos >= 1))
        {
            str1.insert(pos - 1, str2);
            cout << str1 << endl;
        }
        else
        {
            cout << "Invalid Input" << endl;
            break;
        }
    } while (false);
    return 0;
}

输出:

jiangsu

123

3

ji123angsu


目录
相关文章
|
6月前
|
Linux 监控 Ubuntu
Linux 终端操作命令(1)
Linux 终端操作命令(1)
98 1
Linux 终端操作命令(1)
|
6月前
|
算法 Java Go
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
47 1
Rust每日一练(Leetday0018) N皇后II、最大子数组和、螺旋矩阵
|
6月前
|
Linux 监控 Shell
Linux 终端命令之文件浏览(4) head, tail
Linux 终端命令之文件浏览(4) head, tail
61 0
Linux 终端命令之文件浏览(4) head, tail
|
6月前
|
Shell Linux 机器学习/深度学习
Linux 终端操作命令(3)内部命令用法
Linux 终端操作命令(3)内部命令用法
90 0
Linux 终端操作命令(3)内部命令用法
|
6月前
|
Python Linux Ubuntu
Linux系统部署Python语言开发运行环境
Linux系统部署Python语言开发运行环境
220 0
Linux系统部署Python语言开发运行环境
|
6月前
|
Go Unix 开发者
Go语言time库,时间和日期相关的操作方法
Go语言time库,时间和日期相关的操作方法
102 0
Go语言time库,时间和日期相关的操作方法
|
6月前
|
C++ 存储 Serverless
力扣C++|一题多解之数学题专场(2)
力扣C++|一题多解之数学题专场(2)
50 0
力扣C++|一题多解之数学题专场(2)
|
6月前
|
Go 机器学习/深度学习 Rust
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
87 0
Golang每日一练(leetDay0119) 反转字符串I\II Reverse String
|
6月前
|
Java Go C++
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
64 0
Golang每日一练(leetDay0115) 重新安排行程、递增的三元子序列
|
6月前
|
Java Go C++
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort
57 0
Golang每日一练(leetDay0111) 摆动排序II\I Wiggle Sort