From 2f76382dd6436aadda99d04eef50f68bd0eb0db9 Mon Sep 17 00:00:00 2001 From: coffeecoder08 Date: Mon, 22 Jun 2026 14:25:48 +0530 Subject: [PATCH] Fix #72: Reduce time complexity of strlen checks --- src/analysis.c | 3 ++- src/requests.c | 5 +++-- src/word_list.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/analysis.c b/src/analysis.c index abaf34c..23249c9 100644 --- a/src/analysis.c +++ b/src/analysis.c @@ -15,7 +15,8 @@ #include "../utils/defines.h" size_t word = 0, character = 0; -for (size_t iter_char = 0; iter_char < strlen(example); iter_char++) { +size_t example_len = strlen(example); +for (size_t iter_char = 0; iter_char < example_len; iter_char++) { example[iter_char] = tolower(example[iter_char]); if (example[iter_char] == ' ') { if (example[iter_char + 1] != ' ') { diff --git a/src/requests.c b/src/requests.c index 7e57495..bedada0 100644 --- a/src/requests.c +++ b/src/requests.c @@ -22,8 +22,9 @@ if (only_spaces) continue; //Check for string length to be greater than 1. Since fgets gets the new line character, the length is 1 no matter if any input is given or not -if ((strlen(str) > 1) && (str[strlen(str) - 1] == '\n')) - str[strlen(str) - 1] = '\0'; +len = strlen(str); +if ((len > 1) && (str[len - 1] == '\n')) + str[len - 1] = '\0'; else continue; diff --git a/src/word_list.c b/src/word_list.c index c34ea9e..b88c743 100644 --- a/src/word_list.c +++ b/src/word_list.c @@ -27,7 +27,7 @@ void fillWordList() { for (short phrase_iter = 0; phrase_iter < NUM_WORDS; phrase_iter++) { for (short word_iter =0; word_iter < WORD_LEN; word_iter ++) { if (classifier[class_iter][phrase_iter][word_iter] != NULL - && strlen(classifier[class_iter][phrase_iter][word_iter]) + && classifier[class_iter][phrase_iter][word_iter][0] != '\0' && strcmp(classifier[class_iter][phrase_iter][word_iter]," ") != 0) { strcpy(tmp[tmp_size].word, classifier[class_iter][phrase_iter][word_iter]); tmp[tmp_size].category = 1 << class_iter;