1 条题解

  • 0
    @ 2026-6-19 10:30:20

    📝 题目大意

    给定一个只由 vw 组成的字符串 SS,统计其中所有字符的"下尖部分"总数。字符 v11 个下尖部分,字符 w22 个下尖部分。

    💡 解题思路

    1. 题目分析:字符串长度 1S1001 \le |S| \le 100,数据范围极小,直接遍历即可。根据题目配图,vw 在字形上分别有 11 个和 22 个向下的尖角,w 可以看作两个 v 连在一起。
    2. 算法推导:遍历字符串 SS 的每个字符 S[i]S[i]
      • S[i]=vS[i] = \texttt{v},则答案 ansans+1ans \gets ans + 1
      • S[i]=wS[i] = \texttt{w},则答案 ansans+2ans \gets ans + 2
    3. 边界与细节:字符串仅由 vw 组成,无需处理其他字符。答案最大为 2×100=2002 \times 100 = 200int 足够,但标准代码使用了 long long 也无妨。

    ⏱️ 复杂度分析

    • 时间复杂度O(S)O(|S|),只需一次遍历。
    • 空间复杂度O(1)O(1),仅使用常数级额外空间。

    💻 标准代码 (C++)

    #include<bits/stdc++.h>
    using namespace std;
    long long N, ans; string S;
    int main(){
    	ios_base::sync_with_stdio(0); // 加速 cin/cout
    	cin.tie(0);
    	cout.tie(0);
    	cin >> S;
    	N = S.size();                 // 获取字符串长度
    	for(int i = 0; i < N; i++) {
    		if(S[i] == 'v') {
    			ans++;                // 'v' 贡献 1 个下尖部分
    		} else {
    			ans += 2;             // 'w' 贡献 2 个下尖部分
    		}
    	}
    	cout << ans;
    }
    
    • 1

    信息

    ID
    654
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    (无)
    递交数
    1
    已通过
    1
    上传者