1. 程式人生 > >查詢字串中出現一次且第一次出現的字元

查詢字串中出現一次且第一次出現的字元

原理:利用雜湊表的演算法進行查詢,建立一個能儲存256個數的陣列,第一次對出現的字元進行統計,第二次查找出現一次的字元並返回.

#include<stdio.h>

#include<stdlib.h>


char FirstNotRepeatingChar(char *pString)
{
if (pString == NULL)
{
return '\0';
}
const int tableSize = 256;
unsigned int hashTable[tableSize];
for (unsigned i = 0; i < tableSize; i++)
{
hashTable[i] = 0;
}


char *pHashKey = pString;
while (*pHashKey != '\0')
{
hashTable[*(pHashKey++)]++;
}
pHashKey = pString;
while (*pHashKey != '\0')
{
if (hashTable[*pHashKey] == 1)
return *pHashKey;
pHashKey++;
}
return '\0';
}


int main()
{
char  *str = "abcde.fghabcdefdsdsfdsada";
char c = FirstNotRepeatingChar(str);
printf("%c", c);
system("pause");
return 0;

}

執行結果:

相關推薦

查詢字串出現第一出現字元

原理:利用雜湊表的演算法進行查詢,建立一個能儲存256個數的陣列,第一次對出現的字元進行統計,第二次查找出現一次的字元並返回. #include<stdio.h> #include<

C++面試題之寫一個在一個字串尋找個子串第一個位置的函式

#include <iostream> using namespace std; int search_str(char *strDest ,const char *strSrc, int n ) { int count = 1;

查詢字串第一個只出現字元

考研的時候學習過雜湊函式,但這只是書本上的知識,簡單的理解,從來沒用過,也不知道怎麼用,直到學了第一堂演算法課,原來hash表可以用陣列模擬,統計數字或字元出現的次數。 程式碼如下: int CHash::getStuNum(int* data, int len, in

在相鄰元素相差1的陣列查詢特定元素第一出現的位置(非遍歷)

package algorithm.line; /**  * 思路: 我  * 們要充分利用“相鄰元素之間的差值為1”這個條件。假設我們要查詢“7”這個元素,將table[0]與”7″比較,由於table[0]的值為2,不相  * 等。此時我們要比較的下一個元素是table

查詢字串出現次數最多的字母和出現的次數. 示例: var str =" fdadffddfdffj"; ====> 出現次數最多的是f, 出現了 6 ;

<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title> <script> var a =

java小演算法—查詢字串第一沒有重複的字元

將一串字串中第一次沒有重複出現的字元找出 程式碼 public class Test { public static void main(String[] args) { String

查詢字串指定字元第一個下標_程式碼的優雅寫法

刷 leetCode 有一個題目需要實現 String.indexOf() 的原始碼,好奇之下在 Intellij IDEA 中查看了它的源代,意外地發現原始碼中關於在字串中查詢指定字元的下標的優雅程式碼(至少比我寫的優雅),於是乎我打算開個貼記錄一下。 S

查詢字串第一個不重複的字元

題目要求: 找到字串中第一個不重複的字元,並按原字元顯示,要求可以區分大小寫,預設不區分,true 表示區分, false表示不區分大小寫 示例:輸入Abcad,輸出b; 輸入Abcad true ,輸出A; 輸入Abcad false, 輸出 b

C語言面試題:查詢字串第一個不重複的字元

char findChar(char *s) { char *p,*q; p=q=s; while(*s != '\0') { while(*p++ != '\0')

C++查詢字串同樣的字元,並將其刪除不改變字串的順序。

輸入一個字串,找到相同的字元,將後面出現的字元刪除,不改變字串的順序。 例如: Hello    -》Helo 人山人海   -》人山海 程式碼實現: #include <iostream> #include<string>

查詢資料庫列值重複的資料,查詢並刪除重複的資料

查詢LSCJMB表中F_CJZY對應列值重複的資料: SELECT F_CJZY,COUNT(F_CJZY) FROM LSCJMB GROUP BY F_CJZY HAVING COUNT( F_CJZY )>1 查出了重複的列及重複行數: 刪除全部涉及重複的資料: del

查詢字串包含敏感詞的位置和內容的方法

查詢字串中包含敏感詞的位置和內容的方法 1.檢索一個固定的關鍵詞出現的位置 var i=str.indexOf('關鍵詞') 注意:預設從0開始,預設僅能查詢第一次出現的位置。 var i=str.indexOf('關鍵詞',fromi); 注意:從指定位置的開始下一個位

查詢字串指定字元

1.查詢字串中指定字元 String qqBrowser = "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0; QQBrowser/7.7.28658.400) like Gecko";//字串 String regStr

js獲取瀏覽器URL查詢字串的引數

js 使用split方法分隔字串,和java的split方法一模一樣。 function showWindowHref(){ var sHref = window.location.href; var args = sHref.split('?');

如何獲取瀏覽器URL查詢字串的引數?

廢話不多說,直接看程式碼! var url = 'http://www.runoob.com/jquery/misc-trim.html?channelid=12333&name=xiaoming&age=23';         function URL(

使段程式碼第一執行和以後執行結果不同

在學習《C專家程式設計》時,遇到了這段程式碼非常的有意思。 void generate_initializer(char * string) { static char separator = ' '; printf(" %c %s \n",separator,stri

SQL Server 查詢字串指定字元的個數

需求:查詢數字1在欄位Data中出現的次數。(表如上圖所示) 要查詢某個指定的字元在字串中出現的位置,方法比較簡單,使用 len() 函式和 replace() 函式結合就可以。 實現方法舉例: 假定@str就是表中的Data欄位 DECLARE @str VAR

查詢字串最長的迴文字串

# 採用的是從裡向外擴充套件的方法來計算 def longestPalindrome1(s): res = "" for i in range(len(s)): # 如果長度為奇數的話 tmp = helper(s, i, i)

說說JDK的String.valueOf(null)?第一遇到

1.第一次遇到的是時候 死活不理解為什麼? String valueOf = String.valueOf(map.get("fkfs")); if (valueOf != null ) {         order.setFkfs(PayStyle.valueOf(St

【C語言練習題】編寫一個函式,它從一個字串提取個子字串

《C與指標》 習題 4.14   編寫一個函式,它從一個字串中提取一個子字串。函式原型如下: int substr(char dst[], char src[],int start, int l