洛谷B2126 连续出现的字符(s.size()字符串大小遍历)

题目描述

给定一个字符串,在字符串中寻找第一个连续出现次数不低于 k次的字符。

输入格式

2行。第1 行是k;第2 行是仅包含大小写字母的字符串。

输出格式

字符串中第一个连续出现次数不低于 k 次的字符。如果没有符合条件的字符,输出 No

#include<iostream>
#include<string>
using namespace std;
main()
{
	string s;//字符串形式更便于统计个数
	int k,i,count=1,flag=0;
	char c;
	cin>>k>>s;
	for(i=1;i<=s.size();i++)
	{
		if(s[i]==s[i-1])
		count++;
		else
		count=1;
		if(count==k)
		{
			cout<<s[i-1];
			return 0;//代替flag标记法
		}
	}
	cout<<"No";
	return 0;
}

### 关于 B3721 的解析 目前未找到直接针对 B3721 的具体解析或代码实现。然而,可以通过分析该题目的常见类型以及类似的算法问题来推测其解决方法。 #### 假设题目背景 通常情况下,平台上的编号为 B 类的题目多涉及基础算法训练,可能涵盖数组操作、字符串处理、简单数学计算等内容。如果假设 B3721 是一道关于 **数组操作** 或者 **动态规划** 的题目,则可以参考以下通用思路: --- ### 数组操作类问题的解决方案 对于简单的数组操作问题,常见的解法包括遍历数组并执行特定逻辑运算。例如,在某些场景下需要统计满足条件的元素数量或者计算某种函数值[^1]。 以下是基于 Python 的一个典型例子: ```python def array_operation(arr): result = 0 for num in arr: if num % 2 == 0: # 判断偶数 result += num return result if __name__ == "__main__": input_data = list(map(int, input().split())) print(array_operation(input_data)) ``` 上述代码展示了如何通过循环读取输入数据并对符合条件的数值进行累加操作。 --- ### 动态规划的应用实例 假如 B3721 属于动态规划范畴,那么可以借鉴最长上升子序列 (LIS) 的经典解法[^2]。此问题的核心在于维护一个状态转移方程 `dp[i]` 表示以第 i 个元素结尾的最大长度。 下面是 C++ 版本的一个 LIS 实现: ```cpp #include <iostream> #include <vector> using namespace std; int longest_increasing_subsequence(vector<int> nums) { if (nums.empty()) return 0; vector<int> dp(nums.size(), 1); int max_len = 1; for (size_t i = 1; i < nums.size(); ++i) { for (size_t j = 0; j < i; ++j) { if (nums[j] < nums[i]) { dp[i] = max(dp[i], dp[j] + 1); } } max_len = max(max_len, dp[i]); } return max_len; } int main() { vector<int> sequence = {10, 9, 2, 5, 3, 7, 101, 18}; cout << longest_increasing_subsequence(sequence) << endl; return 0; } ``` 这段代码实现了 O() 时间复杂度下的 LIS 计算过程。 --- ### 结合其他类型的题目特点 如果是成绩权重计算相关的题目,可参照如下公式[^3]: \[ \text{总分} = A \times w_A + B \times w_B + C \times w_C \] 对应的 C++ 实现如下所示: ```cpp #include <bits/stdc++.h> using namespace std; int main() { double a, b, c, ans; cin >> a >> b >> c; ans = a * 0.2 + b * 0.3 + c * 0.5; cout << fixed << setprecision(2) << ans; return 0; } ``` 此处利用了标准库中的流控制功能完成精确到两位小数的结果输出。 --- ### 推测递归结构的可能性 当遇到具有嵌套性质的问题时,递归是一种有效的手段。比如在多项式展开或其他组合型任务中经常需要用到这种方法[^4]。下面是一个典型的递归案例: ```cpp #include <bits/stdc++.h> using namespace std; int recursive_function(int n, int x) { if (n == 0) return 1; if (n == 1) return x * 2; return 2 * x * recursive_function(n - 1, x) - 2 * (n - 1) * recursive_function(n - 2, x); } int main() { int n, x; cin >> n >> x; cout << recursive_function(n, x); return 0; } ``` 这种模式适用于定义清晰且层次分明的任务分解情况。 --- ### Java 实现的基础模板 考虑到部分用户偏好使用 Java 进行开发,这里提供了一个基本框架用于接收整数输入并返回乘积结果[^5]: ```java import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); long a = scanner.nextLong(); long b = scanner.nextLong(); System.out.println(a * b); } } ``` 此类程序适合初学者练习 I/O 操作及变量声明技巧。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值