[算法]判断兄弟单词

一个单词单词字母交换,可得另一个单词,如army->mary,成为兄弟单词。提供一个单词,在字典中找到它的兄弟。描述数据结构和查询过程。

#include <iostream>
#include <string>
#include <cstring>
using namespace std;
void add(unsigned int count[],char c){
    if(c <= ‘Z‘){
        ++count[c - ‘A‘];
    }
    else{
        ++count[c - ‘a‘];
    }

}
bool isBrother(const string& wa,const string& wb){
    if(wa.length() != wb.length()){
        return false;
    }
    unsigned int counta[26],countb[26];
    memset(counta,0,26*4);
    memset(countb,0,26*4);
    for(int i = 0; i < wa.length(); ++i){
        add(counta,wa.at(i));
        add(countb,wb.at(i));
    }
    for(int i = 0; i < 26; ++i){
        if(counta[i]!=countb[i]){
            return false;
        }
    }
    return true;
} 

[算法]判断兄弟单词

时间: 2024-12-26 09:07:53

[算法]判断兄弟单词的相关文章

【华为OJ】【073-查找兄弟单词】

[华为OJ][算法总篇章] [华为OJ][073-查找兄弟单词] [工程下载] 题目描述 输入描述 先输入字典中单词的个数,再输入n个单词作为字典单词. 输入一个单词,查找其在字典中兄弟单词的个数 再输入数字n 输出描述 根据输入,输出查找到的兄弟单词的个数 输入例子 3 abc bca cab abc 1 输出例子 2 bca 算法实现 import java.util.*; /** * Author: 王俊超 * Date: 2016-01-05 14:49 * All Rights Res

编程算法 - 判断二叉树是不是平衡树 代码(C)

判断二叉树是不平衡树 代码(C) 本文地址: http://blog.csdn.net/caroline_wendy 题目: 输入一颗二叉树的根结点, 判断该树是不是平衡二叉树. 二叉平衡树: 任意结点的左右子树的深度相差不超过1. 使用后序遍历的方式, 并且保存左右子树的深度, 进行比较. 代码: /* * main.cpp * * Created on: 2014.6.12 * Author: Spike */ /*eclipse cdt, gcc 4.8.1*/ #include <std

查找兄弟单词

/****************************************************************************** Copyright (C), 2001-2012, Huawei Tech. Co., Ltd. ****************************************************************************** File Name : FindSimilarWord.cpp Version :

[算法] C# Revert 单词反转字符串[低时间复杂度]

无聊期间想起了一道字符串反转的问题. 大致要求输入"I am a good boy",输出"boy good a am I". 要求不能用已经封装好的方法实现.于是乎,我上网查了一下,基本都是用了封装后类库.于是我自己写了一个小算法,低时间复杂度高空间复杂度的算法. private string Revert(string str) { if (str.Length == 0) { return string.Empty; } string newStr = nul

一步一步写算法(之单词统计)

原文:一步一步写算法(之单词统计) [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 在面试环节中,有一道题目也是考官们中意的一道题目:如果统计一段由字符和和空格组成的字符串中有多少个单词? 其实,之所以问这个题目,考官的目的就是想了解一下你对状态机了解多少. (1) 题目分析 从题目上看,如果对一个字符串进行处理,那么可以有下面几种情形:初始状态,字符状态,空格状态,结束状态.那么这几种状态之间应该怎么迁移呢? 初始状态: 如果输入符号是

POJ #1860 Currency Exchange 最短路径算法 判断负环

Description 题目描述在这里:链接 更多的样例:链接 思路 我们把每种货币看成图的顶点,而每个交换站点实现一对货币的交换,可认为增加一个交换站点就是增加两个顶点间的一个环路.从样例中可以知道,如果想要让NICK的资金增加,那么就需要存在一个权值为正的环路,使得货币总价值能够无限上升. 所以现在的问题变成了如何判断图中是否有正环.由于货币交换后总价值可能降低,也就是说可能存在负权边,那么 Dijkstra 就不适用了,应该采用能判断负环的 Bellman_ford ,还有它的优化算法 S

POJ 1860 Currency Exchange(如何Bellman-Ford算法判断正环)

题目链接: https://cn.vjudge.net/problem/POJ-1860 Several currency exchange points are working in our city. Let us suppose that each point specializes in two particular currencies and performs exchange operations only with these currencies. There can be s

Floyd判圈算法(判断链表是否含环)

Floyd判圈算法 简介 Floyd判圈算法,也称龟兔赛跑算法,可用于判断链表.迭代函数.有限状态机是否有环.如果有,找出环的起点和大小.时间复杂度O(n),空间复杂度O(1). 可以先思考一下,假设有一个圆形的跑道周长为\(C\),A和B从同一个起点,分别以\(v\)和\(2v\)的速度同向出发,可以知道,因为B比A跑得快而且跑道是环形的,所以接下来一定存在某一时刻,B和A相遇,这时候,B跑过的总距离\(S_B\)减去A跑的总距离\(S_A\)一定是\(C\)的整数倍.即: \(S_B-S_A

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文。

回文指的是一个字符串从前面读和从后面读都一 样,编写一个算法判断一个字符串是否为回文. 要求: 1)采用链栈实现算法: 2)从键盘输入一个字符串,输出判断结果. #include"stdio.h" #include"stdlib.h" typedef char ElemType; typedef struct stnode { ElemType data; struct stnode *next; }StNode, *LinkStack; int huiwen(ch