zoukankan      html  css  js  c++  java
  • 2016年 河南工业大学校赛 I 题.小天使改名

    小天使改名

    时间限制: 2 秒  内存限制: 128 MB  |  提交: 496  解决: 136
      

    题目描述

    小天使的b站帐号被大家发现啦。于是小天使决定改名,将他原有ID中的两个不同位置的字母进行交换。(小天使有可能将两个不同位置的相同字母进行交换,虽然这样做他的ID并没有发生变化)
    Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID。

    输入

    第一行为数据组数T(T≤100)。
    每组数据的第一行是字符串s1,(2≤length(s1)≤1000),为小天使的原始ID。
    第二行是字符串s2,(length(s2)=length(s1)),为Lsf猜测的ID。
    s1,s2均只含小写字母。

    输出

    对每组数据输出一行,如果这个ID可能是小天使的新ID,输出YES,否则输出NO。

    样例输入

    3
    ch
    hc
    aa
    aa
    abc
    abb
    

    样例输出

    YES
    YES
    NO
    
    思路:两种情况 <1> 存在 相同字母交换位置 (字符串中必须存在两个和以上的相同字母), <2>两个不同字母交换位置
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <iostream>
    
    using namespace std ;
    #define maxn 2000
    char s1[maxn] , s2[maxn] ;
    int pos1 , pos2 ;
    int visit[26] ; 
    
    int main() {
    
        int t ;
        scanf("%d" , &t) ;
        while(t--) {
            scanf("%s %s" , s1 , s2 ) ;
            memset(visit , 0 , sizeof(visit)) ; 
            
            int len  = strlen(s1) ;
            int num= 0 ;
            for(int i=0 ; i<len ; i++) {
                visit[s1[i]-'a'] ++ ; 
                
                if(s1[i] != s2[i]) {
                    num ++ ;
                    if(num == 1 ){
                        pos1 = i ; 
                    } else if(num == 2 ){
                        pos2 = i ; 
                    } else if(num > 2) {
                        break ;
                    }
                }
            }
            // 检查 一个 串中 是否可能出现相同字母 交换的情况 
            bool flag = false ; 
            for(int i=0 ; i<26 ; i++){
                if(visit[i]>=2){
                    flag = true ; 
                }
            }
            //相同字母交换位置 和 不同字母交换位置两种情况 
            if((num == 0 && flag == true) ||(num == 2 && s1[pos1] == s2[pos2] && s1[pos2] == s2[pos1])){
                printf("YES
    ") ; 
            } else {
                printf("NO
    ") ; 
            }
        }
    
        return 0 ;
    }
  • 相关阅读:
    【转载】有效防止百度移动搜索转码
    jquery 弥补ie6不支持input:hover状态
    解决 IE6 position:fixed 固定定位问题
    png-24在ie6中的几种透明方法
    Chrome调试小技巧
    html select美化模拟jquery插件select2.js
    响应式设计的十个基本技巧
    colspan和rowspan
    【转】为什么整个互联网行业都缺前端工程师?
    设计模式之桥接模式
  • 原文地址:https://www.cnblogs.com/yi-ye-zhi-qiu/p/7881792.html
Copyright © 2011-2022 走看看