001 unique string

以后坚持每个星期都写记到算法题,不论简单还是难,纯熟娱乐!

描述:

实现一个算法来判断一个字符串中的字符是否唯一(即没有重复).不能使用额外的数据结构。 (即只使用基本的数据结构)

代码:

#include <iostream>
#include <algorithm>
#include <string>
#include <assert.h>

bool isUnique(const std::string& vStr)
{
	if (vStr.size() == 0) return true;
	bool Hash[128];
	std::fill(Hash, Hash+128, false);

	for (unsigned int i=0; i<vStr.size(); ++i)
	{
		int Temp = vStr[i];
		if (Hash[Temp]) return false;
		Hash[Temp] = true;
	}

	return true;
}

bool isUnique2(const std::string& vStr)
{
	if (vStr.size() == 0) return true;
	int Bucket[4] = {0, 0, 0, 0};

	for (unsigned int i=0; i<vStr.size(); ++i)
	{
		int Temp = vStr[i];
		int Num  = Temp/32;
		int Mod  = Temp%32;

		if (Bucket[Num] & (1<<Mod)) return false;
		Bucket[Num] |= (1<<Mod);
	}

	return true;
}

int main()
{
	std::string Test = "128&";
	std::cout << isUnique2(Test) << std::endl;
	_ASSERT(isUnique(Test) && isUnique2(Test));

	system("pause");
	return 0;
}

参考:http://hawstein.com/posts/1.1.html

001 unique string

时间: 2024-08-01 15:16:46

001 unique string的相关文章

LeetCode题828 —— Unique Letter String

https://leetcode.com/problems/unique-letter-string/description/ A character is unique in string S if it occurs exactly once in it. For example, in string S = "LETTER", the only unique characters are "L" and "R". Let's define 

由String str=new String(&quot;abc&quot;);引起的

话题是由如下的事情引出的: public class StringTest { public static void main(String[] args) { String str1 = new String("abc"); String str2 = "abc"; if (str1 == str2) { System.out.println("str1 == str2"); } else { System.out.println("

&lt;Python&gt; Classes

Classes Python classes provide all the standard features of Object Oriented Programming: the class inheritance mechanism allows multiple base classes, a derived class can override any methods of its base class or classes, and a method can call the me

8个必备的PHP功能开发

这篇文章主要介绍了8个必备的PHP功能开发,需要的朋友可以参考下 PHP开发的程序员应该清楚,PHP中有很多内置的功能,掌握了它们,可以帮助你在做PHP开发时更加得心应手,本文将分享8个开发必备的PHP功能,个个都非常实用,希望各位PHP开发者能够掌握. 1.传递任意数量的函数参数  我们在.NET或者JAVA编程中,一般函数参数个数都是固定的,但是PHP允许你使用任意个数的参数.下面这个示例向你展示了PHP函数的默认参数: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14

The OAuth 2.0 Authorization Framework-摘自https://tools.ietf.org/html/rfc6749

Internet Engineering Task Force (IETF) D. Hardt, Ed. Request for Comments: 6749 Microsoft Obsoletes: 5849 October 2012 Category: Standards Track ISSN: 2070-1721 The OAuth 2.0 Authorization Framework Abstract The OAuth 2.0 authorization framework enab

App Distribution Guide (二)

Configuring Your Xcode Project for Distribution  You can edit your project settings anytime, but some settings are necessary during development. Others are recommended when you distribute your app for beta testing and required when you submit your ap

OpenStack Swift集群部署流程与简单使用

转载:http://www.cnblogs.com/fczjuever/p/3224022.html 之前介绍了<OpenStack Swift All In One安装部署流程与简单使用>,那么接下来就说一说Swift集群部署吧. 1. 简介 本文档详细描述了使用两台PC部署一个小型Swift集群的过程,并给出一些简单的使用实例.本文档假定如下前提条件: 使用Ubuntu操作系统. 每台机器都运行Swift的所有服务,既是Proxy Server,又是Storage Server,用户可以向

Android - 抑制lint的Android XML的警告:tools:ignore

抑制lint的Android XML的警告:tools:ignore 本文地址:http://blog.csdn.net/caroline_wendy Android的XML经常会出现警告,对于一个良好的程序,应该认真对待所有的警告. 除非我们可以确认警告,才可以排除. 显示所有警告的方法:Analyze -> Inspect Code; 就可以检查出所有的警告: 抑制警告使用: tools:ignore. // 忽略全部 xmlns:tools="http://schemas.andro

安卓第七夜 雅典学院

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我之前只使用了一种持续保存数据的方法,即SharedPreferences.然而,SharedPreferences只能存储少量松散的数据,并不适合大量数据的存储.安卓带有SQLite数据库,它是一个简单版本的关系型数据库,可以应对更复杂的数据存取需求.我将在这里说明安卓中该数据库的使用方法.这里只专注于安卓中SQLite数据库的接口使用,并没有深入关系型数据库和SQL语言的背景