字符串中找出连续最长的数字串
题目类型:字符串的处理
题目地址:字符串中找出连续最长的数字串
描述
读入一个字符串str,输出字符串str中的连续最长的数字串
输入描述
个测试输入包含1个测试用例,一个字符串str,长度不超过255。
输出描述
在一行内输出str中里连续最长的数字串。
示例
输入:abcd12345ed125ss123456789
输出:123456789
代码展示:
#include <iostream>
using namespace std;
int main() {
string str;
cin >> str;
int n = str.size();
//用于记录
//begin用于记录头,end用于记录尾,count用于记录长度
int begin=0,end=0,count=0;
for(int i=0;i<n;i++)
{
int j=i;
if(str[i] <= '9' && str[i] >= '0')
{
//对下一个位置进行判断
while(j+1<n && str[j+1] <= '9' && str[j+1] >= '0')
{
j++;
}
}
//对比长度
if(j-i>count)
{
begin = i;
end = j;
count = j-i;
}
//i跳到j,减少运算
i = j;
}
for(int i=begin;i<=end;i++)
{
cout << str[i];
}
}
// 64 位输出请用 printf("%lld")
岛屿数量
题目分类:搜索
题目地址:岛屿数量
描述
给一个01矩阵,1代表是陆地,0代表海洋, 如果两个1相邻,那么这两个1属于同一个岛。我们只考虑上下左右为相邻。
岛屿:相邻陆地可以组成一个岛屿(相邻:上下左右) 判断岛屿个数。
例如:
输入
\[1,1,0,0,0\], \[0,1,0,1,1\], \[0,0,0,1,1\], \[0,0,0,0,0\], \[0,0,1,1,1
]
对应的输出为3
(注:存储的01数据其实是字符'0','1')
示例1
输入:[[1,1,0,0,0],[0,1,0,1,1],[0,0,0,1,1],[0,0,0,0,0],[0,0,1,1,1]]
返回值:3
示例2
输入:[[0]]
返回值:0
示例3
输入:[[1,1],[1,1]]
返回值:1
代码展示
class Solution {
public:
int n,m;
int dx[4] = {0,0,1,-1};
int dy[4] = {1,-1,0,0};
bool vis[205][205];
void dfs(vector<vector<char> >& grid,int i,int j)
{
vis[i][j] = true;
for(int t=0;t<4;t++)
{
int x = i + dx[t],y = j + dy[t];
if(x>=0&&x<n&&y>=0&&y<m&&grid[x][y] == '1' && !vis[x][y])
{
dfs(grid,x,y);
}
}
}
int solve(vector<vector<char> >& grid) {
n = grid.size(),m=grid[0].size();
int ans = 0;
memset(vis, false, sizeof(vis));
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(grid[i][j] == '1' && !vis[i][j])
{
ans++;
dfs(grid,i,j);
}
}
}
return ans;
}
};
拼三角
题目地址:拼三角
题目描述
给出6根棍子,能否在选出3根拼成一个三角形的同时剩下的3根也能组成一个三角形?
输入描述
首先在一行中给出一个 t,1≤t≤
,代表测试数据的组数
接下来t行,每行给出6个数字代表棍子长度,棍子长度为正且小于
输出描述
在一行中输出 "Yes" or "No"
示例1
输入
2
1 1 1 1 1 1
1 2 3 4 5 6
输出
Yes
No
代码展示
#include<iostream>
#include<algorithm>
using namespace std;
int t;
int arr[6];
int main()
{
cin >> t;
while(t--)
{
for(int i=0;i<6;i++)cin >> arr[i];
sort(arr,arr+6);
if(arr[0]+arr[1]>arr[2] && arr[3]+arr[4]>arr[5]||
arr[0]+arr[2]>arr[3] && arr[1]+arr[4]>arr[5]||
arr[0]+arr[3]>arr[4] && arr[1]+arr[2]>arr[5]||
arr[0]+arr[4]>arr[5] && arr[1]+arr[2]>arr[3])
{
cout << "Yes" << endl;
}
else cout << "No" << endl;
}
return 0;
}