zoukankan      html  css  js  c++  java
  • 反对称串问题

    题目描述:

      有一个字符串只有0和1组成,对于某个子串,如果将0和1互换并且倒过来与原子串相同,则认为该子串是"反对称"的.给出一个长度为N的字符串,那么有多少个子串是"反对称"的?

    输入:

    第一行一个正整数N(0<=N<=10000).

    第二行包括一个长度为N的01串.

     输出:

    输出"反对称"子串的个数.

    代码描述:

    #include <iostream>  
    #include <cstdio>  
    #include <cstring>  
    #include <algorithm>  
    using namespace std;
    int a[11000];
    int main()
    {
    	char c;
    	int n;//字符串个数
    	while (cin>>n)
    	{
    		getchar();
    		for (int i = 1; i <= n; i++)
    		{
    			cin >> c;
    			a[i] = c - '0';//转化为整型数组
    		}
    		int sum = 0;//记录反对称串个数
    		for (int i = 1; i<n; i++)
    		{
    			if (a[i] == ((a[i + 1] + 1) % 2))//若相等说明为01或10
    			{
    				sum++;
    				int j, k;
    				for (j = i - 1, k = i + 2; j >= 1 && k <= n; j--, k++)
    				{
    					if (a[j] == (a[k] + 1) % 2)
    						sum++;
    					else
    						break;
    				}
    			}
    		}
    		cout << sum << endl;
    	}
    	return 0;
    }
    
  • 相关阅读:
    es6 --- var const let
    HTTP -- 请求/响应 结构
    点击下载文件
    计算机当前时间
    js -- img 随着鼠标滚轮的变化变化
    vue --- 全局守卫
    vue -- 路由懒加载
    vuex -- 状态管理
    js对数组进行操作
    高性能网站建设
  • 原文地址:https://www.cnblogs.com/ttzz/p/7703936.html
Copyright © 2011-2022 走看看